Delphi编程控制摄像头[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 ba5590484 的 blog

你的电脑有没有摄像头?看到别人用qq玩视屏你会不会去想怎么实现的?
这里介绍使用delphi使用msavicap32.dll就可轻松的实现对摄像头编程,
如果再加上你的网络编程水平,实现一个视屏聊天就不成什么问题了。
看看下面代码的代码:

const wm_cap_start = wm_user;
const wm_cap_stop = wm_cap_start + 68;
const wm_cap_driver_connect = wm_cap_start + 10;
const wm_cap_driver_disconnect = wm_cap_start + 11;
const wm_cap_savedib = wm_cap_start + 25;
const wm_cap_grab_frame = wm_cap_start + 60;
const wm_cap_sequence = wm_cap_start + 62;
const wm_cap_file_set_capture_filea = wm_cap_start + 20;
const wm_cap_sequence_nofile =wm_cap_start+ 63
const wm_cap_set_overlay =wm_cap_start+ 51
const wm_cap_set_preview =wm_cap_start+ 50
const wm_cap_set_callback_videostream = wm_cap_start +6;
const wm_cap_set_callback_error=wm_cap_start +2;
const wm_cap_set_callback_statusa= wm_cap_start +3;
const wm_cap_set_callback_frame= wm_cap_start +5;
const wm_cap_set_scale=wm_cap_start+ 53
const wm_cap_set_previewrate=wm_cap_start+ 52

function capcreatecapturewindowa(lpszwindowname : pchar; dwstyle : longint; x : integer;
y : integer;nwidth : integer;nheight : integer;parentwin : hwnd;
nid : integer): hwnd;stdcall external ‘avicap32.dll‘;

上面的代码就是我们主要用到的一个函数和常量的定义。

好了,打开你的delphi,新建一个工程,将上面的定义加上吧。

新建一个窗口,放个panel上去,添加一个按钮,caption设置为"开始"
这里需要定义一个全局变量,var hwndc : thandle;

开始按钮代码如下:

begin
hwndc := capcreatecapturewindowa(‘my own capture window‘,ws_child or ws_visible ,panel1.left,panel1.top,panel1.width,panel1.height,form1.handle,0);

hwndc := capcreatecapturewindowa(‘my own capture window‘,ws_child or ws_visible ,panel1.left,panel1.top,panel1.width,panel1.height,form1.handle,0);
if hwndc <> 0 then
begin
sendmessage(hwndc, wm_cap_set_callback_videostream, 0, 0);
sendmessage(hwndc, wm_cap_set_callback_error, 0, 0);
sendmessage(hwndc, wm_cap_set_callback_statusa, 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设置成"停止"
代码如下:
if hwndc <> 0 then begin
sendmessage(hwndc, wm_cap_driver_disconnect, 0, 0);
hwndc := 0;
end;

视屏截到了,怎么把它给保存下来呢?

下面按两种方式保存,一个是bmp静态图,一个是avi动画。

本文关键:Delphi编程控制摄像头
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top