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

By admin at 2018-05-27 • 0人收藏 • 1728人看过
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**/


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...