资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Delphi 编程控制摄像头你的电脑有没有摄像头?看到别人用QQ 玩视屏你会不会去想怎么实现的?这里介绍使用DELPHI 使用 MS 的AVICAP32.DLL就可轻松的实现对摄像头编程,假如再加上你的网络编程水平,实现一个视屏聊天就不成什么问题了。看看下面代码的代码:constWM_CAP_START=WM_US.你的电脑有没有摄像头?看到别人用QQ 玩视屏你会不会去想怎么实现的?这里介绍使用DELPHI 使用 MS 的 AVICAP32.DLL就可轻松的实现对摄像头编程,假如再加上你的网络编程水平,实现一个视屏聊天就不成什么问题了。看看下面代码的代码:constWM_CAP_START=WM_USER;constWM_CAP_STOP=WM_CAP_START 68;constWM_CAP_DRIVER_CONNECT=WM_CAP_START 10;constWM_CAP_DRIVER_DISCONNECT=WM_CAP_START11;constWM_CAP_SA VEDIB=WM_CAP_START 25; constWM_CAP_GRAB_FRAME=WM_CAP_START 60; constWM_CAP_SEQUENCE=WM_CAP_START 62;constWM_CAP_FILE_SET_CAPTURE_FILEA=WM_CAP_S TART 20;constWM_CAP_SEQUENCE_NOFILE=WM_CAP_START 63 constWM_CAP_SET_OVERLAY=WM_CAP_START 51 constWM_CAP_SET_PREVIEW=WM_CAP_START 50constWM_CAP_SET_CALLBACK_VIDEOSTREAM=WM_C AP_START 6;constWM_CAP_SET_CALLBACK_ERROR=WM_CAP_STA RT 2;constWM_CAP_SET_CALLBACK_STATUSA=WM_CAP_ST ART 3;constWM_CAP_SET_CALLBACK_FRAME=WM_CAP_STA RT 5;constWM_CAP_SET_SCALE=WM_CAP_START 53constWM_CAP_SET_PREVIEWRATE=WM_CAP_START 52functioncapCreateCaptureWindowA(lpszWindowName:PCHAR;dwStyle:longint;x:integer;y:integer;nWidth:integer;nHeight:integer;ParentWin:HWND;nId:integer):HWND;STDCALLEXTERNALAVICAP32.DLL ;上面的代码就是我们主要用到的一个函数和常量的定义。好了,打开你的 Delphi ,新建一个工程,将上面的定义加上吧。新建一个窗口, 放个 Panel 上去,添加一个按钮, Caption 设置为 开始 这里需要定义一个全局变量,varhWndC:THandle;开始按钮代码如下:beginhWndC:=capCreateCaptureWindowA( MyOwnCaptureWindow,WS_CHILDorWS_VISIBLE,Panel1.Left,Panel1.Top,Panel1. Width,Panel1.Height,Form1.Handle,0);hWndC:=capCreateCaptureWindowA( MyOwnCaptureWindow,WS_CHILDorWS_VISIBLE,Panel1.Left,Panel1.Top,Panel1.Width,Panel1.Height,Form1.Handle,0);ifhWndC<>0thenbeginSendMessage(hWndC,WM_CAP_SET_CALLBACK_VIDEOS TREAM,0,0);SendMessage(hWndC,WM_CAP_SET_CALLBACK_ERROR, 0,0);SendMessage(hWndC,WM_CAP_SET_CALLBACK_STATUS A,0,0);SendMessage(hWndC,WM_CAP_DRIVER_CONNECT,0,0); SendMessage(hWndC,WM_CAP_SET_SCALE,1,0);SendMessage(hWndC,WM_CAP_SET_PREVIEWRATE,66,0); SendMessage(hWndC,WM_CAP_SET_OVERLAY ,1,0); SendMessage(hWndC,WM_CAP_SET_PREVIEW,1,0); end;按 F9 运行一下,怎么样,是不是可以看到摄像头的视屏了?那怎么停下来?再加个按钮caption设置成停止 代码如下:ifhWndC<>0thenbeginSendMessage(hWndC,WM_CAP_DRIVER_DISCONNECT,0,0);hWndC:=0;end;视屏截到了,怎么把它给保存下来呢?下面按两种方式保存, 一个是 BMP 静态图,一个是 AVI 动画。再放三个按钮到窗体上去, caption 分别设置成 保存 BMP 、 开始录像 、 停止录像 三个按钮的代码分别如下:/保存 BMPifhWndC<>0thenbeginSendMessage(hWndC,WM_CAP_SA VEDIB,0,longint(pchar( c:est.bmp );end;/开始录像ifhWndC<>0thenbeginSendMessage(hWndC,WM_CAP_FILE_SET_CAPTURE_FIL EA,0,Longint(pchar( c:est.avi );SendMessage(hWndC,WM_CAP_SEQUENCE,0,0);end;/停止录像ifhWndC<>0thenbeginSendMessage(hWndC,WM_CAP_STOP,0,0);end;再运行看看吧。 。可以保存几张图看看, 也可以录成 AVI 以后慢慢欣赏。程序运行效果: 相关贴图 完整的程序代码如下:unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ExtCtrls;typeTForm1=class(TForm)Panel1:TPanel;Button1:TButton;Button2:TButton;Button3:TButton;Button4:TButton;Button5:TButton;procedureButton1Click(Sender:TObject);procedureButton2Click(Sender:TObject);procedureButton3Click(Sender:TObject);procedureButton4Click(Sender:TObject);procedureButton5Click(Sender:TObject);procedureFormClose(Sender:TObject;varAction:TCloseAction);privatehWndC:THandle;publicPublicdeclarationsend;varForm1:TForm1;constWM_CAP_START=WM_USER; constWM_CAP_STOP=WM_CAP_START 68;constWM_CAP_DRIVER_CONNECT=WM_CAP_START 10;constWM_CAP_DRIVER_DISCONNECT=WM_CAP_START 11;constWM_CAP_SA VEDIB=WM_CAP_START 25; constWM_CAP_GRAB_FRAME=WM_CAP_START 60; constWM_CAP_SEQUENCE=WM_CAP_START 62;constWM_CAP_FILE_SET_CAPTURE_FILEA=WM_CAP_START 20;constWM_CAP_SEQUENCE_NOFILE=WM_CAP_START 63 constWM_CAP_SET_OVERLAY=WM_CAP_START 51 constWM_CAP_SET_PREVIEW=WM_CAP_START 50constWM_CAP_SET_CALLBACK_
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号