AForge,Emgu.CV抓拍图像大小

时间:2022-08-09 09:23:32
原文: AForge,Emgu.CV抓拍图像大小

2017年,忙忙碌碌地过去了,象往年一样,依然没有时间上CSDN,博客园。

这一年是打工以来最辛苦的一年。

这一年用了不少自己没有接触过的东西。如人脸识别,小程序,android开发等。

从.net到java,开发当中有很多坑,有些是通过baidu,bing搜到国内外辛苦贡献的开发人员的答案而解决的。

而我根本没有时间把这些解决方法贡献到社区,因为象一台机器要不停地运转,产出……

在做人脸识别项目时使用了:AForge,Emgu.CV。用它们来显示视频和抓拍图片。

相对来说AForge占用资源少点。人脸图片大小需要控制在合适的范围内,识别率才高。

图片的大小我选择了源头控制方式, 抓拍出来的图片就能用。

AForge

 mImageSize = new ResizeNearestNeighbor(width, Height);
 videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString);
 //2.0以上的版本已不支持
 videoSource.DesiredFrameSize = new Size(width, Height);
 videoSource.DesiredFrameRate = 1;

用下面方法来处理。

using AForge.Video.DirectShow;
using AForge.Video;
using System.Configuration;
using AForge.Imaging.Filters;

private ResizeNearestNeighbor mImageSize;
//抓拍时处理
void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            try
            {
                Bitmap bmp = mImageSize.Apply(eventArgs.Frame);
                bmp.Save(mCatchImagePath);
                bmp.Dispose();
            }
            catch (Exception ex)
            {
               
            }
        }

Emgu.CV 直接设置

 mCapture = new Capture(0);
 mCapture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.Fps, 30);
 mCapture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameWidth, 640);
 mCapture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameHeight, 480);
利用年底的空闲写一 ,希望2018年 有空写上十几篇。