调用网上的摄像头ocx来打开摄像头

By admin at 2018-05-27 • 0人收藏 • 421人看过
import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio form";right=619;bottom=474)
mainForm.add(
button={cls="button";text="打开摄像头";left=0;top=434;right=620;bottom=475;db=1;dl=1;dr=1;z=2};
ffWindow={cls="custom";text="custom";left=0;top=0;right=620;bottom=435;db=1;dl=1;dr=1;dt=1;z=1}
)
/*}}*/

import Vcapocx;
import console
console.open()
var fm = Vcapocx(mainForm.ffWindow);
var cont = fm.getDevCnt();
console.log(cont)
console.log(fm.getDevName())


mainForm.button.oncommand = function(id,event){
	fm.openCapDev();
}

mainForm.onClose = function(hwnd,message,wParam,lParam){
    fm.closeCapDev();
}

mainForm.enableDpiScaling();
mainForm.show();

return win.loopMessage();


里面用到的自定义库如下:

class Vcapocx{
	ctor( winform ){
		winform.createEmbed("{7EEAA4B5-DE19-493F-950C-4053B77195D2}",this);
		this.imgFmt = 1;
		this.nCfg = 0;
		this.preview = 1;
		this.event = 0;
	};
	getDevCnt = function(){
		return this._object.GetDevCnt(0);
	};
	getDevName = function(index=1){
		return this._object.GetDevNam(index);
	};
	openCapDev = function(index=1){
		if(!this.preview){
			this.nCfg = this.nCfg + 128;
		}
		if(this.event){
			this.nCfg = this.nCfg + this.imgFmt;
		}
		return this._object.OpenCapDev(index,this.nCfg);
	};
	closeCapDev = function(index=0){
		return this._object.CloseCapDev(index);
	};
	@_meta;
}
import win.guid;
import com.activeX;
namespace Vcapocx{

	try{
		..com.CreateObject("{7EEAA4B5-DE19-493F-950C-4053B77195D2}")
	}
	catch(e){
		..com.activeX.regsvr32("\res\TesoSeeu.ocx",true);
	} 
	_meta = {
		preview = {
			_set = function(v){
				owner[["preview"]] = v;
			}
		};
		event = {
			_set = function(v){
				owner[["event"]] = v;
			}
		};
		imgFmt = {
			_set = function(v){
				owner[["imgFmt"]] = v;
			}	
		}
	}
}


1 个回复 | 最后更新于 2018-05-27
2018-05-27   #1

第二版:

import win.ui;
/*DSG{{*/
mainForm = win.form(text="双摄像头显示演示";right=1286;bottom=795)
mainForm.add(
VpWindow={cls="custom";text="custom";left=0;top=0;right=640;bottom=480;db=1;dl=1;dr=0.5;dt=1;z=1};
VpWindow2={cls="custom";text="custom";left=647;top=0;right=1287;bottom=480;db=1;dl=0.5;dr=1;dt=1;z=2};
button={cls="button";text="打开摄像头";left=952;top=580;right=1282;bottom=638;db=1;dl=0.74;dr=1;z=3};
button2={cls="button";text="从左侧窗口中截图";left=952;top=656;right=1282;bottom=714;db=1;dr=1;z=5};
button3={cls="button";text="从右侧窗口中截图";left=952;top=731;right=1282;bottom=789;db=1;dr=1;z=8};
combobox={cls="combobox";left=952;top=515;right=1282;bottom=535;db=1;dl=1;dr=1;edge=1;font=LOGFONT(h=-21);items={};mode="dropdownlist";z=4};
plus={cls="plus";text="显示截图1";left=0;top=482;right=466;bottom=796;z=6};
plus2={cls="plus";text="显示截图2";left=474;top=482;right=940;bottom=796;z=7}
)
/*}}*/

import Vcapocx;
var vpW = Vcapocx(mainForm.VpWindow);
var vpW2 = Vcapocx(mainForm.VpWindow2);
//获取摄像头数量
var cont = vpW.getDevCnt();
if(cont){
	for(i=1;cont;1){
		//添加到列表框
		mainForm.combobox.add(vpW.getDevName(i));
	}
	mainForm.combobox.selIndex = 1;
}

mainForm.button.oncommand = function(id,event){
    //打开摄像头1
    vpW.openCapDev(2);
    //打开摄像头2
    vpW2.openCapDev(1);
}

mainForm.onClose = function(hwnd,message,wParam,lParam){
    //关闭摄像头
    vpW.closeCapDev();
    vpW2.closeCapDev();
}

mainForm.button2.oncommand = function(id,event){
    import soImage;
    var soimg = soImage();
    //抓拍
	var img = vpW.snapOne();
	//获取图像内存大小
	var nIsz = vpW.getImgLen();
	//读取图片数据
	soimg.setBytes(img,,nIsz);
	//保存图片
	//soimg.save("/ggg.bmp");
	//直接显示在截图框中
	mainForm.plus.background = soimg.getBytes("*.bmp");
}

mainForm.button3.oncommand = function(id,event){
	import soImage;
    var soimg = soImage();
    //抓拍
	var img = vpW2.snapOne();
	//获取图像内存大小
	var nIsz = vpW2.getImgLen();
	//读取图片数据
	soimg.setBytes(img,,nIsz);
	//保存图片
	//soimg.save("/ggg2.bmp");
	//直接显示在截图框中
	mainForm.plus2.background = soimg.getBytes("*.bmp");
}

mainForm.enableDpiScaling();
mainForm.show();

return win.loopMessage();

库文件:

//简易摄像头库
class Vcapocx{
	ctor( winform ){
		winform.createEmbed("{7EEAA4B5-DE19-493F-950C-4053B77195D2}",this);
		this.imgFmt = 1;
		this.nCfg = 0;
		this.preview = 1;
		this.event = 0;
	};
	getDevCnt = function(){
		return this._object.GetDevCnt(0);
	};
	getDevName = function(index=1){
		return this._object.GetDevNam(index);
	};
	getImgLen = function(){
		return this._object.GetImgLen(this.imgFmt); //此图像格式对应的内存大小
	};
	snapOne = function(){
		return this._object.SnapOne(this.imgFmt); //指定图像格式
	};
	openCapDev = function(index=1){
		if(!this.preview){
			this.nCfg = this.nCfg + 128;
		}
		if(this.event){
			this.nCfg = this.nCfg + this.imgFmt;
		}
		return this._object.OpenCapDev(index,this.nCfg);
	};
	closeCapDev = function(index=0){
		return this._object.CloseCapDev(index);
	};
	@_meta;
}

import win.guid;
import com.activeX;
namespace Vcapocx{
	try{
		..com.CreateObject("{7EEAA4B5-DE19-493F-950C-4053B77195D2}")
	}
	catch(e){
		..com.activeX.regsvr32("\res\TesoSeeu.ocx",true);
	} 
	_meta = {
		preview = {
			_set = function(v){
				owner[["preview"]] = v;
			}
		};
		event = {
			_set = function(v){
				owner[["event"]] = v;
			}
		};
		imgFmt = {
			_set = function(v){
				owner[["imgFmt"]] = v;
			}	
		}
	}
}

/**intellisense()
Vcapocx = Vcapocx控件
Vcapocx(.(winform) = 创建Vcapocx控件,\n参数为窗体或控件对象
Vcapocx() = !Vcapocx.
end intellisense**/

/**intellisense(!Vcapocx)
preview = 预览模式设置:\n默认开启,true:开启,false:关闭;
event = 事件模式设置:\n默认关闭,true:开启,false:关闭;
imgFmt = 图像格式:默认1\n1=BMP,2=拓印BGR,3=拓印RGB;
getDevCnt() = 返回电脑中摄像头数量;
getDevName(.() = 返回所选摄像头名称;
getImgLen() = 返回设定的图片格式对应的内存大小;
snapOne() = 按照指定格式抓拍图片;
openCapDev(.() = 打开所选摄像头;
closeCapDev(.() = 关闭摄像头;
end intellisense**/


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...