关于利用avicap32.dll开发摄像头程序中取景框部分的实现
在网上利用avicap32.dll开发的程序很多,而且都可以从摄像头中捕捉到相应的摄像头图片,但是平时要捕捉图像时都是要获取当前屏幕的一部分,因此要一个取景框,但网上找了下很少有这部分介绍。最近写了一个摄像程序,顺便拿来给大家分享(.net) :
首先在窗体上放一个picturebox(pb1)作为取景框。原理是:从摄像头中的图像放入内存中,然后在内存中的图像数据中截取相应的图像大小的数据,放入取景框中。
void CreatePhoto(int left,int top,int right,int bottom) //参数为取景框在摄像头图像中的位置
{
image img;
rectangle rect;
sendmessage(lwndc ,WM_CAP_EDIT_COPY,0,0); //将截取的图像数据放入剪切板(clipboard)
rect = new Rectangle(Left, top, Right, Bottom);
img = new Image(Clipboard.GetImage,rect ); //从剪切板中获得图像数据
PictureBox.image = img;
}
最后把这段代码放入timer中,让它反复的显示。这样就行了。
好了,希望能给大家一点帮助和启示。
在网上利用avicap32.dll开发的程序很多,而且都可以从摄像头中捕捉到相应的摄像头图片,但是平时要捕捉图像时都是要获取当前屏幕的一部分,因此要一个取景框,但网上找了下很少有这部分介绍。最近写了一个摄像程序,顺便拿来给大家分享(.net) :
首先在窗体上放一个picturebox(pb1)作为取景框。原理是:从摄像头中的图像放入内存中,然后在内存中的图像数据中截取相应的图像大小的数据,放入取景框中。
void CreatePhoto(int left,int top,int right,int bottom) //参数为取景框在摄像头图像中的位置
{
image img;
rectangle rect;
sendmessage(lwndc ,WM_CAP_EDIT_COPY,0,0); //将截取的图像数据放入剪切板(clipboard)
rect = new Rectangle(Left, top, Right, Bottom);
img = new Image(Clipboard.GetImage,rect ); //从剪切板中获得图像数据
PictureBox.image = img;
}
最后把这段代码放入timer中,让它反复的显示。这样就行了。
好了,希望能给大家一点帮助和启示。