♣
怎样实现定时抓取摄像头的图片,我已经实现了抓取图片
已经实现了抓取摄像头的图像,并存为缩小的jpg图片,但是怎么实现一按下“捕捉图片”的按钮后就可以每隔10秒刷新捕捉的图像,在按下就可以停止呢?我没用过线程和定时器,所以麻烦各位说的清除些,我下面的代码用了sleep(5000),估计sleep把整个程序组塞了,造成了假死的现象
procedure tform1.button3click(sender: tobject);
var
jpg :tjpegimage;
bmp :tbitmap;
name:string;
nameid:string;
tmp:string;
begin
name:=combobox1.text;
nameid:=inttostr(combobox1.itemindex+1);
while(true) do
begin
if hwndc <> 0 then begin
sendmessage(hwndc,wm_cap_savedib,0,longint(pchar(nameid+.bmp)));
// jpg.create;
jpg:=tjpegimage.create;
bmp:=tbitmap.create;
bmp.loadfromfile(nameid+.bmp);
bmp.canvas.brush.style := bsclear;
bmp.canvas.font.color := clred;
bmp.canvas.font.size := 20;
bmp.canvas.font.name:=宋体;
bmp.canvas.font.size:=9;
bmp.canvas.textout((bmp.width div 2 - 30),(0),name);
bmp.canvas.textout(0,(bmp.height-10),datetimetostr(now));
image2.picture.bitmap.assign(bmp);
jpg.assign(bmp);
jpg.savetofile(nameid+a.jpg);
jpg.free;
bmp.free;
jpg:= stretchimagepercent(nameid+a.jpg,50,100);
jpg.savetofile(nameid+.jpg);
jpg.free;
end;
sleep(5000);
end;
end;
· 网友精彩回答:
procedure delay(msecs:integer);
var firsttickcount : real;
begin
firsttickcount := gettickcount;
repeat
application.processmessages;
until ((gettickcount - firsttickcount) >= longint (msecs));
end;
用这个延时看看。
use "dspack directx show 多媒体 dvd 抓图 控件包",everything about vedio will become very easy.
用一个timer()来实现等待很简单的,把抓图的函数放到ontimer事件中,就可以了;
就是,设好timer的间隔时间,毫秒单位。
enable := true启动
ontimer事件中写抓图函数。
试试就知道效果了。
enable := false停止
^_^,是这样的吗?
.- 更多问题:
- · 向光标所在发送文字(不是鼠标)
- · 初次做视频程序,想将内存数据画出来,总是报错,还请做过的朋友指点一二!谢谢
- · 为什么我的头文件shlwapi.h中没有StrRetToStr,谁能帮帮我怎么样可以用StrRetToStr???重分感谢!!!
- · 有关Edit的特别奇怪的问题
- · 死而复生,高兴
- · 如何用windbg中断按钮
- · 深圳一梦 - 女大学生在深圳
- · 关于一个随机数抽取的问题。
- · 啥叫“页面回传”呀?(赚了分再补)
- · 通过 open file for output as #1这个方法新建或者修改一个文件,如何将该文件的编码转为utf8
- · 有关ArrayList的运行机制的探讨and求教
- · PB与WORD文档
- · 选择重传arq,为什么窗口最大为2^(n-1)?请给出例子,谢谢!
- · 大家帮我看看下面的这段程序,谢谢了
- · 散分200,庆祝一下
- · 如何分析动态网页,如何提取网页数据

