CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  GAME,图形处理/多媒体

怎样用DELPHI接收摄像头的图象

楼主benbenpear(笨笨)2004-10-02 01:04:07 在 Delphi / GAME,图形处理/多媒体 提问

怎样用DELPHI接收摄像头的图象 问题点数:0、回复次数:67Top

1 楼whbo(王红波(年轻人,要有所作为))回复于 2004-10-02 01:08:38 得分 0

很有难度的问题,跟楼主学习,关注。。。Top

2 楼gemouzhi(^_^)回复于 2004-10-02 02:46:16 得分 0

网上很多例子  
  Top

3 楼qiqi9709(qiqi9709)回复于 2004-10-13 23:27:11 得分 0

代码:    
   
  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动画。    
   
  再放三个按钮到窗体上去,caption分别设置成"保存BMP"、"开始录像"、"停止录像"    
  三个按钮的代码分别如下:    
   
  //保存BMP    
    if   hWndC   <>   0   then   begin    
              SendMessage(hWndC,WM_CAP_SAVEDIB,0,longint(pchar('c:\test.bmp')));    
    end;    
   
  //开始录像    
    if   hWndC   <>   0   then    
    begin    
        SendMessage(hWndC,WM_CAP_FILE_SET_CAPTURE_FILEA,0,   Longint(pchar('c:\test.avi')));    
        SendMessage(hWndC,   WM_CAP_SEQUENCE,   0,   0);    
    end;    
   
  //停止录像    
    if   hWndC   <>   0   then   begin    
          SendMessage(hWndC,   WM_CAP_STOP,   0,   0);    
    end;    
   
  Top

4 楼ForEverKissing(永爱文)回复于 2004-10-14 15:14:37 得分 0

如何将保存的.avi图像文件进行压缩?Top

5 楼query008(新新人类)回复于 2004-10-14 23:29:04 得分 0

AVI   TO   MPEG的有很多代码Top

6 楼Crystal_Boy(加加)回复于 2004-10-18 16:32:38 得分 0

用Dspack控件,那里面有例子Top

7 楼coder_yjm(不进则退,天天向上)回复于 2004-10-20 12:07:48 得分 0

高!我灌下水!学习中!Top

8 楼old_wei(老魏)回复于 2004-10-20 22:37:58 得分 0

那如何改变采集图象的分辨率呢?默认是160*120,要变成320*240该怎样设置?  
  Top

9 楼Javpp(0)(1)(2)(3)(4)(5)(6)(7)(8)(9)回复于 2004-10-20 23:19:02 得分 0

做个记号咯Top

10 楼zzlingaaa(小舟)回复于 2004-11-23 12:13:16 得分 0

markTop

11 楼progray(千重劫)回复于 2004-11-24 20:40:10 得分 0

markTop

12 楼realhero(虚心学习,天天向上)回复于 2004-11-25 09:19:07 得分 0

markTop

13 楼Hovers(〓扶摇直上〓)回复于 2004-11-25 14:10:55 得分 0

高Top

14 楼cg2004ren(程序人生)回复于 2005-01-15 11:33:58 得分 0

upTop

15 楼terrytzq(边缘)回复于 2005-01-15 12:17:35 得分 0

学习Top

16 楼geoffrey9043(鑫鑫)回复于 2005-01-18 00:46:37 得分 0

qiqi9709(qiqi9709)   就是用DELPHI使用MS的AVICAP32.DLL实现的对摄像头编程,至于别的功能网上的例子也蛮多的,找来看看应该能明白的呵Top

17 楼gfz007(gfz007)回复于 2005-01-18 01:14:32 得分 0

xiexie收藏....Top

18 楼blazeworld(笨鸟先飞)回复于 2005-01-18 09:49:17 得分 0

路过,很精彩,  
  顶下Top

19 楼ma007(machao)回复于 2005-02-28 20:36:56 得分 0

markTop

20 楼lc0012(hezhongxia)回复于 2005-02-28 21:46:52 得分 0

这里最好的调用方法,我也用。。。。。呵呵Top

21 楼lc0012(hezhongxia)回复于 2005-02-28 21:48:42 得分 0

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';    
   
   
  implementation  
  uses   math;         //这个也是最重要的,不然有个类型的变量不可以定义哦。  
  {$R   *.dfm}  
   
   
  //按钮上一定要这样写哦。  
  procedure   TForm1.Button1Click(Sender:   TObject);    
  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;  
  end;Top

22 楼skynew2004(总想让别人帮我一下。skynew.ys168.com)回复于 2005-02-28 22:34:39 得分 0

要不我发一个例子给你,但你好像不给分?Top

23 楼wuyu1981(方圆)回复于 2005-03-01 11:24:54 得分 0

学习ingTop

24 楼Erice(白雪公猪)回复于 2005-03-01 11:45:33 得分 0

UpTop

25 楼cclzlj(美女不上勾)回复于 2005-03-01 11:57:52 得分 0

顶顶看Top

26 楼caiso(十年磨一剑)回复于 2005-03-04 10:51:00 得分 0

顶一下Top

27 楼thirdapple(.:RNPA:.陨落雕 - 芝兰宝树)回复于 2005-03-05 14:47:41 得分 0

dspackTop

28 楼force2004(牛牛)回复于 2005-03-06 11:48:43 得分 0

收藏!Top

29 楼uptrend()回复于 2005-03-07 09:57:50 得分 0

我觉得是不是找一个摄像头的sdk就可以了呢?关注中Top

30 楼proman()回复于 2005-03-22 15:29:45 得分 0

我正需要这个,试试看。Top

31 楼richwin99(cimzhou)回复于 2005-03-23 16:09:58 得分 0

这里有成熟的控件  
  www.mvchat.zj.com  
  可以免费使用Top

32 楼heluqing(鉴之小河〖劳累求充实〗)(vcl .net)回复于 2005-03-23 16:51:09 得分 0

做个记号,往后可能用的到...Top

33 楼xiangyx(至尊宝.结贴我一向很准时)回复于 2005-03-23 17:07:13 得分 0

这么好的帖子顶一下Top

34 楼lyhsprite(独孤求爱)回复于 2005-03-24 14:35:32 得分 0

markTop

35 楼jianping0(ljp)回复于 2005-03-24 15:44:59 得分 0

↑Top

36 楼BurningIces(焰燃冰)回复于 2005-03-24 17:31:52 得分 0

存Top

37 楼waysoft(华子)回复于 2005-03-24 17:38:19 得分 0

学习Top

38 楼studysuneck(才疏学浅)回复于 2005-03-26 11:21:41 得分 0

建议置顶!!!!!Top

39 楼king_xing(红枫叶)回复于 2005-03-27 03:05:25 得分 0

有一点让我疑惑,怎么出的例子连续二次调用hWndC   :=   capCreateCaptureWindowA('My   Own   Capture   Window',WS_CHILD   or   WS_VISIBLE   ,Panel1.Left,Panel1.Top,Panel1.Width,Panel1.Height,Form1.Handle,0),而且参数一样!  
  请教!!Top

40 楼caiso(十年磨一剑)回复于 2005-03-27 08:33:41 得分 0

帮顶一下Top

41 楼jackyhuo(jacky)回复于 2005-04-09 15:11:57 得分 0

upTop

42 楼force2004(牛牛)回复于 2005-04-11 21:22:11 得分 0

upTop

43 楼quicksand201(流沙)回复于 2005-04-11 22:43:00 得分 0

upTop

44 楼xthmpro_cn([可人])回复于 2005-04-11 23:05:14 得分 0

MARKTop

45 楼Stiven_PFan(爱卿儿)回复于 2005-04-12 08:45:37 得分 0

http://dev.csdn.net/article/54/54244.shtm  
  这里说得很详细Top

46 楼njwangke(飞翔的大象)回复于 2005-04-12 08:48:42 得分 0

应该有OCX控件的,而且控件会提供相关的属性和方法供设置和调用。Top

47 楼lzwei3842(赐缘)回复于 2005-04-13 21:59:18 得分 0

值得学习Top

48 楼swei56(泥巴)回复于 2005-04-13 22:12:02 得分 0

scTop

49 楼jilu_sun(Godfather)回复于 2005-04-18 08:31:08 得分 0

学习!Top

50 楼longjiang_m(笨笨)回复于 2005-04-20 09:30:28 得分 0

最简单的办法是:你下载一个dspack2.31(免费的)的组件安装上,然后看看里面demo,有完整的例子,如果你要求不高的话,他的例子可以直接使用了,Top

51 楼neo40(企鹅)回复于 2005-04-21 10:56:49 得分 0

http://community.csdn.net/Expert/topic/3881/3881464.xml?temp=2.886599E-02Top

52 楼woundedsoul(MissWolf)回复于 2005-05-03 09:41:54 得分 0

强!做过标记!嘿嘿Top

53 楼xfpjl(妖道)回复于 2005-08-14 10:16:05 得分 0

0  
   
  Top

54 楼zousoft(菜菜鸟的战斗诗歌)回复于 2005-08-14 13:10:52 得分 0

这里有几个c++实现的方法,delphi其实也是用delphi语法调用他们。  
   
  http://dev.csdn.net/develop/article/44/44105.shtm  
   
  http://dev.csdn.net/develop/article/74/74480.shtm  
  http://dev.csdn.net/develop/article/74/74565.shtmTop

55 楼anonymous1982(kevin)回复于 2005-08-18 12:25:13 得分 0

up,  
  收藏Top

56 楼amdwinter(我不是好人)回复于 2005-08-18 12:59:10 得分 0

记号Top

57 楼decal(我用DELPHI)回复于 2005-08-18 15:33:08 得分 0

用DSPACK吧,很方便的Top

58 楼apple058(浪迹天涯)回复于 2005-08-19 14:04:30 得分 0

收藏Top

59 楼dqxLang(飞翔)回复于 2005-08-21 22:10:37 得分 0

收藏  
  Top

60 楼cncharles(旺仔)回复于 2005-08-22 08:19:49 得分 0

markTop

61 楼chenzunshi3()回复于 2005-08-22 11:10:28 得分 0

http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~Top

62 楼liu_z_x(007)回复于 2005-08-22 11:21:04 得分 0

markTop

63 楼apple058(浪迹天涯)回复于 2005-08-22 13:27:43 得分 0

=====================================================  
  =====================================================  
   
    我很想知道  
   
  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;    
   
  中   WM_USER,WM_CAP_START,WM_CAP_START....    
  这些常量你们是怎么知道的?  
  有这方面的帮助文档吗?  
  这些是API方面的知识吗?  
  我如果需要实现别的功能又应该是那些常量呢?  
   
  谢谢  
   
  =====================================================  
  =====================================================Top

64 楼syfly739(飞仔)回复于 2005-08-22 15:03:14 得分 0

路过,学习,marking......Top

65 楼hansonboy(hansonboy)回复于 2005-08-30 13:50:56 得分 0

报到Top

66 楼myboor(菜菜菜鸟)回复于 2005-08-30 14:31:06 得分 0

markTop

67 楼DelphiKey3()回复于 2005-09-02 17:41:23 得分 0

网上大把这样的代码,搜一下就OK了,楼主也是怎么还不结帖Top

相关问题

  • 在delphi中如何获得摄像头捕捉的图象
  • 捕获摄像头图象
  • 求助,关于摄像头比较图象的问题。
  • 怎样实现从摄像头中取出图象文件????
  • 在VB中如何控制摄像头进行图象的抓拍?
  • 急求摄像头采集到的位图图象保存的代码!!!
  • 怎么对摄像头拍摄到的图象进行视频实时压缩?
  • 求助,谁有c#编的网络摄像头多媒体信号自动接收系统
  • 求在Wince下能显示摄像头所采集图象的的源代码(EVC编程)......
  • 摄像头

关键词

  • .net
  • start
  • ws
  • 代码
  • delphi
  • 控件
  • cap
  • hwndc
  • wm
  • sendmessage

得分解答快速导航

  • 帖主:benbenpear

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo