类型或命名空间名称' Capture'无法找到EMGU

时间:2018-04-24 01:42:31

标签: c# visual-studio emgucv

我正在测试EMGU的学校作业,我正在关注this教程以了解EMGU的工作原理,但我遇到了问题。

这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.CV.UI;

namespace FacialRecognition
{
    public partial class Form1 :Form
    {
        private Capture _capture;
        bool CapturingProcess = false;
        Image<Bgr, Byte> imgOrg;
        Image<Gray, Byte> imgProc;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try {
                _capture = new Capture(CaptureType.DShow);
            } catch(NullReferenceException ex) {
                MessageBox.Show(ex.Message);
                return;
            }
        }

        void processFunction(object sender, EventArgs e)
        {
            imgOrg = _capture.QueryFrame();
            if(imgOrg == null) return;
            imgProc = imgOrg.InRange(new Bgr(50, 50, 50), new Bgr(255, 255, 255));
            imgProc = imgProc.SmoothGaussian(9);
            original.Image = imgOrg;
            processed.Image = imgProc;
        }
    }
}

然而,我收到错误:

The type or namespace name 'Capture' could not be found (are you missing a using directive or an assembly reference?)

它建议using System.Text.RegularExpressions;,这很奇怪。

我猜我错过了什么,但我引用了所有的DLL 在教程中。以下是一些截图:

Solution Explorer(它们设置为Copy always

ReferencesEmgu.CV.World.NetStandard1_4.dllEmgu.CV.World.dll发生碰撞)

2 个答案:

答案 0 :(得分:1)

在EMGU的新版本中,Capture已重命名为VideoCapture,因此请尝试

private VideoCapture _capture;

答案 1 :(得分:0)

您可以考虑在EMGU.CV NuGet包(http://www.emgu.com/wiki/index.php/Main_Page)中使用Emgu.CV.VideoCapture而不是Capture。所以,你的声明变成了:

private VideoCapture _capture;