调用网上的摄像头ocx来打开摄像头
By
admin
at 2018-05-27 • 0人收藏 • 1837人看过
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
登录后方可回帖
第二版:
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**/