Delphi编程控制摄像头_第1页
Delphi编程控制摄像头_第2页
Delphi编程控制摄像头_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Delphi 编程控制摄像头你的电脑有没有摄像头?看到别人用QQ 玩视屏你会不会去想怎么实现的?这里介绍使用DELPHI 使用 MS 的AVICAP32.DLL就可轻松的实现对摄像头编程,假如再加上你的网络编程水平,实现一个视屏聊天就不成什么问题了。看看下面代码的代码:constWM_CAP_START=WM_US.你的电脑有没有摄像头?看到别人用QQ 玩视屏你会不会去想怎么实现的?这里介绍使用DELPHI 使用 MS 的 AVICAP32.DLL就可轻松的实现对摄像头编程,假如再加上你的网络编程水平,实现一个视屏聊天就不成什么问题了。看看下面代码的代码:constWM_CAP_START=W

2、M_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;const

3、WM_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

4、_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 ;上面的代码就是我们主要用到的一个函数和常量的定义

5、。好了,打开你的 Delphi ,新建一个工程,将上面的定义加上吧。新建一个窗口, 放个 Panel 上去,添加一个按钮, Caption 设置为 "开始 "这里需要定义一个全局变量,varhWndC:THandle;开始按钮代码如下:beginhWndC:=capCreateCaptureWindowA( MyOwnCaptureWindow,WS_CHILDorWS_VISIBLE,Panel1.Left,Panel1.Top,Panel1. Width,Panel1.Height,Form1.Handle,0);hWndC:=capCreateCaptureWindo

6、wA( 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)

7、;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设置成"停止 "代码如下:ifh

8、WndC<>0thenbeginSendMessage(hWndC,WM_CAP_DRIVER_DISCONNECT,0,0);hWndC:=0;end;视屏截到了,怎么把它给保存下来呢?下面按两种方式保存, 一个是 BMP 静态图,一个是 AVI 动画。再放三个按钮到窗体上去, caption 分别设置成 " 保存 BMP" 、" 开始录像 " 、 "停止录像 "三个按钮的代码分别如下:/保存 BMPifhWndC<>0thenbeginSendMessage(hWndC,WM

9、_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;再运行看看吧。 。可以保存几张图看

10、看, 也可以录成 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(Se

11、nder: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

12、_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

13、 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

14、_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;STDCALLEXTERNAL AVICAP32.DLL ;implementation

15、$R*.dfmprocedureTForm1.Button1Click(Sender:TObject); 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.

16、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_SE

17、T_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;end;procedureTForm1.Button2Click(Sender:TObject);beginifhWndC<>0thenbeginSendMessage(hWndC,WM_CAP_DRIVER_DISCONNECT,0,0 );hWndC:=0;end

18、;end;procedureTForm1.Button3Click(Sender:TObject);beginifhWndC<>0thenbeginSendMessage(hWndC,WM_CAP_SA VEDIB,0,longint(pchar( c:est.bmp );end;end;procedureTForm1.Button4Click(Sender:TObject); beginifhWndC<>0thenbeginSendMessage(hWndC,WM_CAP_FILE_SET_CAPTURE_FILEA,0,Longint(pchar( c:est.avi );SendMessage(hWndC,WM_CAP_SEQUENCE,0,0);end;end;proce

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论