ShowTime_02_在NET平台上采集摄像头数据
来源:互联网 发布:微信封域名 编辑:程序博客网 时间:2024/06/05 07:31
ShowTime的开发中需要一个摄像头照相的功能,所以需要一个在.NET平台上的摄像头采集模块。我首先想到的是否使用DX中的DirectShow来做,但查了一下资料后,发现DX9虽然支持.net的托管版本,但其中唯独DirectShow没有相应的.net版本,在codeproject虽然有厉害的老外在.net上用C#重写了所有的directshow接口,然后导入import 相应的dll做成了directshow版本(那位老外真是让人佩服),但directshow操作还是比较麻烦。
在查MSDN时,我惊喜的发现WIN32的Mutimedia API中有一个capCreateCaptureWindow函数,该函数创建一个子窗口,通过该窗口显示摄像头视频。Greate!所以,以这个API为出发,我封装了一个.net的类Camera,通过将帧数据复制到剪贴版然后得到Image对象,大家可以在这个URL: http://download.csdn.net/source/404066(包括了测试程序)
下载使用DLL,这个类实时返回摄像头当前帧.net上的Image对象,对外提供很方便的.NET接口。
先介绍如何在你的程序中使用Camer类来采集摄像头视频:
1、在你的PC上安装摄像头和相应驱动程序(严正声明,请不要在没装摄像头的情况下,试图使用Camera类来采集摄像头视频 );
2、创建你的C# WINFORM程序,将我的Camer.dll加入你工程的引用;
3、创建Camera对象,调用Create方法打开摄像头;
4、通过FrameImage属性可以实时得到当前帧的Image对象;
5、若需要更改摄像头的参数设置,则调用ShowCameraConfig方法;
例子程序:
public Form1()
...{
camera = new Camera();
InitializeComponent();
camera.UpdataFrameImage += new EventHandler(DrawFrame);
}
private void DrawFrame(object o, EventArgs e)
...{
image = camera.FrameImage;
if(image!=null)
...{
panel1.CreateGraphics().DrawImage(image, panel1.ClientRectangle,
new Rectangle(new Point(0, 0), image.Size), GraphicsUnit.Pixel);
}
}
private void button1_Click(object sender, EventArgs e)
...{
camera.Create(10, this);
}
private void button2_Click(object sender, EventArgs e)
...{
camera.ShowCameraConfig();
}
Camera类的UML结构图:
说明:frameSize返回当前视频采集的分辨率,Create方法打开摄像头进行采集,第一个参数指明更FrameImage的速度(单位:次/秒),UpdataFrameImage是对外开放的代理,在每次更新FrameImage的时候会触发该代理,ShowCameraConfig为显示摄像头参数设置对话框,Destroy为关闭摄像头释放资源。
这是我使用这个Camera类,来采集摄像头数据保存下的图片效果:
Camera类后期可能还要修改,等固定下来以后,我再把C#源代码都挂上
- ShowTime_02_在NET平台上采集摄像头数据
- Qt开发:Qt+OpenCV在(Linux平台)PC上采集摄像头视频(源码奉送)
- V4L2采集摄像头数据
- V4L2摄像头采集数据
- V4L2摄像头采集数据
- V4L2摄像头采集数据
- 在raspberry上使用USB摄像头做视频采集
- opencv之采集摄像头数据
- 在X86平台上安装摄像头驱动及应用
- usb摄像头在s3c6410平台上的测试
- usb摄像头在s3c6410平台上的测试
- 用OpenCV在MFC Dialog中Picture控件上显示摄像头采集实时视频
- 移植opencv到开发板,摄像头在开发板6410上的采集使用(1)
- 移植opencv到开发板,摄像头在开发板6410上的采集使用(2)
- OK210-uvc摄像头采集并显示在屏幕上(v4l2编程)
- 使用opencv2在qt界面上进行摄像头采集以及简单的拍照功能
- 在Android上使用FFmpeg将摄像头采集的YUV裸流编码为h264。
- Aforge.net framework采集摄像头视频
- 关于选择Delphi2006的几点理由
- "GlassFish--开源的Java EE应用服务器"序言
- "GlassFish--开源的Java EE应用服务器"序言
- Visual Studio2005下配置及运行NUnit
- jsf自定义组件-jafyear选择年份
- ShowTime_02_在NET平台上采集摄像头数据
- Delphi2005的新特性
- Enterprise Library设计模式
- 书讯 -- Microsoft Office SharePoing Server 2007 新一代企业 Web 解决方案
- Silverlight DataBindings for 1.1 (Managed code)铪铪
- javascript实现多表头分类交叉报表:html表格
- Silverlight DataBindings for 1.1 (Managed code)铪铪
- 用Java EE 5实现的网上书店实例
- 最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解