C# 控制 Webcam [using Emgu]
来源:互联网 发布:27世纪人工智能系统gif 编辑:程序博客网 时间:2024/04/28 21:08
这篇主要是去说明如何利用C#去控制你的网络摄影机,
且是使用Emgu这套dll,
甚么是Emgu呢?
他和OpenCV有点关联,
OpenCV相信不管是Java, C, C++等language的开发者,都了解OpenCV是甚么!?
简单说,OpenCV是一套强大的图像处理library,由INTEL开发,
非常强大,甚至你可以利用OpenCV去做到OCR,很方便。
也由于OpenCV没有支持C#,那C#要怎么使用OpenCV呢?
就是靠Emgu,Emgu是一套允许OpenCV的function在C#等语言中被使用。
但我们这边并不会使用到OpenCV的功能,
就是简单的介绍Emgu很基本的功能,
就是存取摄影机,
首先先去下载Emgu,并且安装,
安装完成以后就可以开始写程序....
看你是要开启一个WPF专案,还是一个Window Form专案,
建议你开启Window Form,因为到时Webcam回传回来的image型态,
可以直接在 Window Form中的pictureBox里面使用。
开启以后,就在你的项目中加入reference,
加入以下四个dll,dll的位置就是在你安装Emgu位置的bin底下:
- Emgu.CV.dll
- Emgu.CV.ML.dll
- Emgu.CV.UI.dll
- Emgu.Util.dll
加入以后,请先储存你的项目,储存以后请在你安装Emgu位置的bin底下找到两个dll,
- opencv_core231.dll
- opencv_highgui231.dll
把这两个dll放置到你的项目的/bin/Debug/底下。
因为Emgu.CV.dll会使用到上述两个dll。
完成上述动作以后就开始写code,先import会使用到的lib,如下:
using Emgu.CV;using Emgu.CV.Structure;
先宣告一个Capture对象,如下(这个对象就是用来链接到你的webcam):
private Capture cap = null; // Webcam对象
接着在Form1_Load event中,连结到摄影机以及建立一个event用来抓取画面,如下:
private void Form1_Load(object sender, EventArgs e){ cap = new Capture(0); // 连结到摄影机0,如果你有两台摄影机,第二台就是1 Application.Idle += new EventHandler(Application_Idle); // 在Idle的event下,把画面设定到pictureBox上(当然你也可以用timer事件)}
接下来要写抓取画面event的code:
voidApplication_Idle(object sender, EventArgs e){ Image<Bgr, Byte> frame =cap.QueryFrame(); // 去query该画面 pictureBox1.Image = frame.ToBitmap(); // 把画面转换成bitmap型态,在喂给pictureBox组件}
完成以后按下F5执行,应该就可以顺利取得摄影机画面!
- C# 控制 Webcam [using Emgu]
- c# OpenCV Emgu学习
- C# WebCam User Control Source
- webcam
- 如何使用C#创建Windows Webcam应用
- Webcam Web Service using Direct Internet Message Encapsulation (DIME)
- Webcam Motion Detection: Using the BitmapData API in Flash 8
- C# 中使用OPenCV(Emgu)心得
- C#下的openCV(Emgu CV)
- C#下的openCV(Emgu CV)
- 【C# -- OpenCV】Emgu CV 第一个实例
- C# 中使用OPenCV(Emgu)心得
- C# 中使用OPenCV(Emgu)心得
- C# 中使用OPenCV(Emgu)心得
- C#下使用openCV(Emgu CV)
- C#下的openCV(Emgu CV)
- C# 中使用OPenCV(Emgu)心得
- C# 中使用OPenCV(Emgu)心得
- 计算机科学中最重要的32个算法
- jquery实现简单的拖拽效果,兼容所有浏览器(二)
- Spring整合Hibernate
- 有说服力的写作:驾驭文字的艺术
- android之输入内容会进行联想并且消除重复项
- C# 控制 Webcam [using Emgu]
- 去掉字符串空格
- nginx 负载均衡配置方法 nginx.conf
- 跟老程序员的谈话
- bash:alias 只能再交互界面用,不能在shell脚本中使用
- 浅谈Android中Callback(回调)的使用
- 黑马程序员---黑马笔记(一些基础类)
- ubuntu中取消文件夹或文件等右下解一把锁的标志的方法
- 杭电2138