使用 haarcascade 在 c# 中的 emgucv 中进行人脸检测的 IInputArray 图像参数
IInputArray image parameter for face detection in emgucv in c# using haarcascade
我已经安装了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 and others)
。新版本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));
新的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 是接受的接口:
- 一个 CvArray,它是 Matrix 和 Image<,>
的基础class
- A Mat,相当于 cv::Mat
的 Open CV
- UMat,相当于 cv::UMat
的 Open CV
- ScalarArray,可用于将标量转换为 IInputArray
- VectorOf{XXX},这是 C++ 标准向量的接口
我已经安装了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 and others)
。新版本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));
新的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 是接受的接口:
- 一个 CvArray,它是 Matrix 和 Image<,> 的基础class
- A Mat,相当于 cv::Mat 的 Open CV
- UMat,相当于 cv::UMat 的 Open CV
- ScalarArray,可用于将标量转换为 IInputArray
- VectorOf{XXX},这是 C++ 标准向量的接口