C#控制摄像头实例谈

开发 后端
本来以后这个东西再也不会写了,没想到今天帮别人弄摄像头编程,发现了这个问题,记录下来。希望对大家理解C#控制摄像头有所帮助。

使用VFW写的C#控制摄像头最大的问题就在于需要自己手动另起一个线程。(这里,我们定义一个叫AviCapture.cs的类,用于引入avicap32.dll以及相关的内容)在avicap32.dll中,CAPTUREPARMS结构里有一个fYield的东东,代表的意思是另起线程标志位,如果为真,则程序重新启动一个线程用于视频流的捕获,默认值是假。但是如果你是为了真,你必须要在程序中处理一些潜在的操作,因为当视频捕获时,其他操作并没有被屏蔽。。在AviCapture这个类的基础上定义一个叫Video的类,实现控制设想头的一些方法,如打开摄像头,关闭摄像头,开始录像,结束录像,拍照片等等。。。。在Video类中还要定义两个C#控制摄像头函数如下:

  1. publicvoidget()  
  2. {  
  3. AviCapture.SendMessage(this.lwndC,AviCapture.WM_CAP_GET_SEQUENCE_SETUP,AviCapture.SizeOf(Capparms),refCapparms);  
  4. }  
  5.  
  6. publicvoidset()  
  7. {  
  8. AviCapture.SendMessage(this.lwndC,AviCapture.WM_CAP_SET_SEQUENCE_SETUP,AviCapture.SizeOf(Capparms),refCapparms);  

用来获得和设置相关的C#控制摄像头参数

最后,在主窗体类中,做如下调用

  1. video.get();//  
  2. video.Capparms.fYield=true;//另起一个线程  
  3. video.Capparms.fAbortLeftMouse=false;//鼠标左键单击停止为false  
  4. video.Capparms.fAbortRightMouse=false;//鼠标右键单击停止为false  
  5. video.set(); 

在这里还有强调一下,上面的这段函数要用在视频预览函数之后(也就是打开摄像头那个函数),否则是不起作用的。

【编辑推荐】

  1. 如何用C#和ADO.NET访问
  2. 浅析C# Switch语句
  3. C#验证输入方法详解
  4. 简单介绍C# 匿名方法
  5. C# FileSystemWatcher对象
责任编辑:彭凡 来源: CSDN
相关推荐

2009-08-21 17:17:49

C#摄像头编程

2009-08-21 17:55:14

C#获取摄像头

2009-08-21 17:11:05

C#摄像头

2021-03-11 10:21:55

特斯拉黑客网络攻击

2013-03-21 09:56:09

2011-06-08 13:16:48

2017-06-20 11:45:52

2011-04-25 09:16:10

Windows 8

2012-06-23 20:13:44

HTML5

2015-10-26 00:17:42

2011-05-31 11:12:46

2009-06-17 11:52:01

Linux

2011-09-08 13:53:20

Linux摄像头

2018-06-20 11:54:54

2011-09-13 15:51:11

PhoneGap AP

2014-07-16 13:36:30

MotionLinux监控

2020-06-04 10:59:10

JavaScript开发技术

2019-05-20 09:42:04

2019-05-07 08:51:56

2012-04-10 08:44:31

诺基亚
点赞
收藏

51CTO技术栈公众号