Emgu CV 图像捕获使用 C#

Posted

技术标签:

【中文标题】Emgu CV 图像捕获使用 C#【英文标题】:Emgu CV Image Capture using C# 【发布时间】:2017-12-24 01:20:25 【问题描述】:

我使用的是 Emgu CV 2.4.0.1717,每当我声明 Mat 类时,它都不存在。我正在尝试使用可以捕获图像的 c# 创建一个应用程序。这是我的面部识别项目。

我试图声明一个 Mat 对象,但它不存在。我尝试过使用其他版本的 Emgu CV 并且效果很好。然而,HaarCascade 并不存在。它说我应该改用 CascadeClassifier 但仍然有错误。这是我的代码:

public partial class Camera : Form


    private VideoCapture cap;
    private HaarCascade haar;

    private void Camera_Load(object sender, EventArgs e)
    
        // passing 0 gets zeroth webcam
        cap = new VideoCapture(0);
        // adjust path to find your xml
        haar = new HaarCascade(
        "haarcascade_frontalface_default.xml");
     

    private void timer1_Tick(object sender, EventArgs e)
    
        using (Image<Bgr, byte> nextFrame = cap.QueryFrame())
        
            if (nextFrame != null)
            

                Image<Gray, byte> grayframe = nextFrame.Convert<Gray, byte>();
                var faces =
                    grayframe.DetectHaarCascade(
                        haar, 1.4, 4,
                        HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
                        new Size(nextFrame.Width / 8, nextFrame.Height / 8)
                        )[0];

                foreach (var face in faces)
                
                    nextFrame.Draw(face.rect, new Bgr(0, double.MaxValue, 0), 3);
                
                imgCamUser.Image = nextFrame.ToBitmap();
            
        
    

【问题讨论】:

【参考方案1】:

您尝试访问的 Mat 类来自 emgucv 3+。并且 HaarCascade 类是 emgu 的低版本。

您需要将您的 emgu 从 here 升级到 emgu 3,并使用 CascadeClassifier 而不是 HaarCascade。

【讨论】:

以上是关于Emgu CV 图像捕获使用 C#的主要内容,如果未能解决你的问题,请参考以下文章

图像数据访问和图像匹配中的 C# 和 EMgu CV

如何使用 C# 中的 Emgu CV 库在图像上绘制矩形。举个例子

使用 Emgu CV C# 创建轮廓蒙版以仅在原始图像上显示 ROI

C# - Emgu CV Retireve 并在 GUI(图片框或图像框)上显示计算的特征面和平均面

C#下用于同时使用OpenCvSharp和Emgu.CV两个库的相互转换库

C# EmguCV图像处理实例