我已经安装了 emgu.cv 3.2(新版本)和 visual studio 2012 ,并且使用Windows窗体应用程序进行面部检测我尝试使用haarcascade。我已经完成了引用
(Emgu.CV.DebuggerVisualizers.VS2012.dll,Emgu.CV.UI.dll, Emgu.CV.UI.GL.dll,Emgu.CV.World.dll)
并添加现有的
(opencv_ffmpeg320.dll等)
。新版本的 emgu.cv 似乎改变了一些名称,例如Capture取代了VideoCapture。但是,我仍然坚持完成下面的面部检测代码(最后一个代码)。我该怎么做才能将IInputArray图像参数放在DetectMultiScale()上。请帮忙!
capture = new VideoCapture(0);
haar = new CascadeClassifier("haarcascade_frontalface_default.xml");
Image<Bgr, byte> nextFrame = capture.QueryFrame().ToImage<Bgr, byte>()
Image<Gray, byte> grayframe = nextFrame.Convert<Gray, byte>();
// stuck here below to put IInputArray image
var faces = haar.DetectMultiScale( , 1.1, 10,
Emgu.CV.CvEnum.HaarDetectionType.DoCannyPruning,
new Size(20, 20));
// or you can use this to code
MCvAvgComp[][] faces =
haar.DetectMultiScale(**IInputArray image** , 1.1,
10, Emgu.CV.CvEnum.HaarDetectionType.DoCannyPruning,
new Size(20, 20));
答案 0 :(得分:0)
新的EmguCv默认使用Mat作为图像格式。所以在IInputArray中你需要传递Mat
Mat matFrame = capture.QueryFrame();
Image<Bgr, byte> nextFrame = matFrame.ToImage<Bgr, byte>()
Image<Gray, byte> grayframe = nextFrame.Convert<Gray, byte>();
var faces = haar.DetectMultiScale( matFrame, 1.1, 10,
Emgu.CV.CvEnum.HaarDetectionType.DoCannyPruning,
new Size(20, 20));
IInputArray和IOutArray接受以下接口: