emgucv-windesktop 3.2.0.2682 实现打开摄像头,人脸跟踪,视频录像

网上关于emgucv 3.2版本的使用说明很少,都是一些老版本的,很多函数都不一样了,所以自己整理一下emgucv 3.2的基本用法,包括打开摄像头,人脸跟踪,视频录像


1.配置安装详见地址点击打开链接(http://www.cnblogs.com/xh6300/p/5941986.html)

2.emgucv-windesktop 3.2.0.2682下载地址  点击打开链接(https://sourceforge.net/projects/emgucv/postdownload?source=dlp)

安装完毕之后,在安装目录下“\emgucv-windesktop 3.2.0.2682\Emgu.CV.Example”是存放的Emgucv的例子,本文通过修改CameraCapture的源码实现人脸跟踪,视频录像


编译环境:vs2013+.net4.0+emgucv-windesktop 3.2

运行效果

emgucv-windesktop 3.2.0.2682 实现打开摄像头,人脸跟踪,视频录像_第1张图片

具体实现:

1.摄像头操作

主要使用VideoCapture类进行操作;在事件ImageGrabbed中处理的显示,代码如下

try
            {
                _capture = new VideoCapture();
                _fps = (int)(_capture.GetCaptureProperty(CapProp.Fps));
                //_capture.SetCaptureProperty(CapProp.FrameWidth,1280);
                //_capture.SetCaptureProperty(CapProp.FrameHeight, 720);
                _capture.ImageGrabbed += ProcessFrame;
            }
            catch (NullReferenceException excpt)
            {
                MessageBox.Show(excpt.Message);
            }
2.人脸检测

封装了一个类DetectFace,进行人脸和眼睛的检测,训练库使用的emgu自带的haarcascade_frontalface_default.xml和haarcascade_eye.xml

 //人脸检测
                long detectionTime;
                List faces = new List();
                List eyes = new List();
                DetectFace.Detect(_frame, @"haarcascade_frontalface_default.xml", @"haarcascade_eye.xml", faces, eyes, out detectionTime);
                foreach (Rectangle face in faces)
                    CvInvoke.Rectangle(_frame, face, new Bgr(Color.Red).MCvScalar, 2);
                foreach (Rectangle eye in eyes)
                    CvInvoke.Rectangle(_frame, eye, new Bgr(Color.Blue).MCvScalar, 2);


3.视频录像

使用了VideoWriter类,只需要调用Write方法就可以把摄像头里得到的帧写入到视频文件中;但是要注意格式

mp4视频保存方法:

_videoname = DateTime.Now.ToString("yyyyMMddHHmmss") + ".mp4";
_fps = 5;
_writer = new VideoWriter(_videoname, VideoWriter.Fourcc('D', 'I', 'V', 'X'), _fps, new System.Drawing.Size(_capture.Width, _capture.Height), true);

avi视频保存方法

    string videoname = Path.Combine(filepath, DateTime.Now.ToString("yyyyMMddHHmmss") + ".avi");
    VideoWriter writer = new VideoWriter(videoname, fps, new System.Drawing.Size(frameW, frameH), true);

附源码下载,由于依赖库太大没有上传,只上传了源码,下载源码之后,生成路径修改为安装的“emgucv-windesktop 3.2.0.2682\bin”下即可;

现在好像不能上传0分的资源了???

源码下载地址

附emgu3.2下载地址

你可能感兴趣的:(c#,winform)