知识大全 利用Delphi编程控制摄像头(一)
Posted 知
篇首语:一盏一直亮着的灯,你不会去注意,但是如果它一亮一灭,你就会注意到。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 利用Delphi编程控制摄像头(一)相关的知识,希望对你有一定的参考价值。
利用Delphi编程控制摄像头(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
你的电脑有没有摄像头?看到别人用QQ玩视屏你会不会去想怎么实现的?这里介绍使用DELPHI使用MS的AVICAP DLL就可轻松的实现对摄像头编程 如果再加上你的网络编程水平 实现一个视屏聊天就不成什么问题了看看下面代码的代码
const WM_CAP_START = WM_USER; const WM_CAP_STOP = WM_CAP_START + ; const WM_CAP_DRIVER_CONNECT = WM_CAP_START + ; const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + ; const WM_CAP_SAVEDIB = WM_CAP_START + ; const WM_CAP_GRAB_FRAME = WM_CAP_START + ; const WM_CAP_SEQUENCE = WM_CAP_START + ; const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + ; const WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+ const WM_CAP_SET_OVERLAY =WM_CAP_START+ const WM_CAP_SET_PREVIEW =WM_CAP_START+ const WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + ; const WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START + ; const WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START + ; const WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START + ; const WM_CAP_SET_SCALE=WM_CAP_START+ const WM_CAP_SET_PREVIEWRATE=WM_CAP_START+ function capCreateCaptureWindowA(lpszWindowName : PCHAR; dwStyle : longint; x : integer; y : integer;nWidth : integer;nHeight : integer;ParentWin : HWND; nId : integer): HWND;STDCALL EXTERNAL AVICAP DLL ;
上面的代码就是我们主要用到的一个函数和常量的定义
好了 打开你的Delphi 新建一个工程 将上面的定义加上吧
新建一个窗口 放个Panel上去 添加一个按钮 Caption设置为 开始 这里需要定义一个全局变量 var hWndC : THandle; 开始按钮代码如下
begin hWndC := capCreateCaptureWindowA( My Own Capture Window WS_CHILD or WS_VISIBLE Panel Left Panel Top Panel Width Panel Height Form Handle ); hWndC := capCreateCaptureWindowA( My Own Capture Window WS_CHILD or WS_VISIBLE Panel Left Panel Top Panel Width Panel Height Form Handle ); if hWndC <> then begin SendMessage(hWndC WM_CAP_SET_CALLBACK_VIDEOSTREAM ); SendMessage(hWndC WM_CAP_SET_CALLBACK_ERROR ); SendMessage(hWndC WM_CAP_SET_CALLBACK_STATUSA ); SendMessage(hWndC WM_CAP_DRIVER_CONNECT ); SendMessage(hWndC WM_CAP_SET_SCALE ); SendMessage(hWndC WM_CAP_SET_PREVIEWRATE ); SendMessage(hWndC WM_CAP_SET_OVERLAY ); SendMessage(hWndC WM_CAP_SET_PREVIEW ); end; 按F 运行一下 怎么样 是不是可以看到摄像头的视屏了?那怎么停下来?再加个按钮caption设置成 停止 代码如下 if hWndC <> then begin SendMessage(hWndC WM_CAP_DRIVER_DISCONNECT ); hWndC := ; end;
视屏截到了 怎么把它给保存下来呢?下面按两种方式保存 一个是BMP静态图 一个是AVI动画
再放三个按钮到窗体上去 caption分别设置成 保存BMP 开始录像 停止录像 三个按钮的代码分别如下
//保存BMP if hWndC <> then begin SendMessage(hWndC WM_CAP_SAVEDIB longint(pchar( c:\\test bmp ))); end; //开始录像 if hWndC <> then begin SendMessage(hWndC WM_CAP_FILE_SET_CAPTURE_FILEA Longint(pchar( c:\\test avi ))); SendMessage(hWndC WM_CAP_SEQUENCE ); end; //停止录像 if hWndC <> then begin SendMessage(hWndC WM_CAP_STOP ); end;
再运行看看吧 可以保存几张图看看 也可以录成AVI以后慢慢欣赏
程序运行效果
cha138/Article/program/Delphi/201311/24710相关参考
DELPHI基础教程:Delphi图形图像编程(一)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
DELPHI基础教程:Delphi图形图像编程(一)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
DELPHI基础教程:Delphi图形图像编程(一)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
Delphi面向对象的编程方法(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Delphi
DELPHI基础教程:SQL编程(一)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 利用
财务软件中总少不了大写的金额表示方式如下为一个简单的小写金额转换为大写的函数其思路简单(可以说烂吧居然利用了位置来转换)但是它却几乎可以无限制的转换只要你能读得出来和写得进去 functionT
Delphi编程访问注册表(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 注册表是wind
中国使用的是汉字而又夹杂这些英文这样我们在数字数时就麻烦了电脑是按字节来计算一个汉字算两个字而中国人的习惯是一个汉字就是一个字所以通过电脑来计算必须解决下列问题 利用文本控件TMemo来存放文章
将远程控制应用于教学中已成为目前计算机化教学的重要手段一定有很多的网虫想了解这种网络教学方式的编程原理吧在此我们就以一个简单的远程控制程序作为示例说明这种网络编程的基本原理本程序以Delphi编程
知识大全 利用Delphi全面控制Windows任务栏[2]
利用Delphi全面控制Windows任务栏[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&