我正在测试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
)
References(Emgu.CV.World.NetStandard1_4.dll
和Emgu.CV.World.dll
发生碰撞)
答案 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;