版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csharp25/article/details/84679632
Test:
1. 读取cascade模型文件
2. 对输入的图片进行灰度处理
3. 使用cascade以及模型文件(本例使用的是人脸正面)对图片进行预测
TestCrop:
步骤如Test,截取出人脸照片
haarcascades的模型可以从opencv获得:
https://github.com/opencv/opencv/tree/master/data
...
public class FRTest
{
private CascadeClassifier _cascadeClassifier;
private Capture _capture;
public void Test(Bitmap bmp)
{
//_capture = new Capture();
var imageFrame = new Image<Bgr, byte>(bmp); //_capture.QueryFrame();
_cascadeClassifier = new CascadeClassifier(Application.StartupPath + "/haarcascades/haarcascade_frontalface_default.xml");
//using (var imageFrame = _capture.QueryFrame().ToImage<Bgr, Byte>())
//{
if (imageFrame != null)
{
var grayframe = imageFrame.Convert<Gray, byte>();
var faces = _cascadeClassifier.DetectMultiScale(grayframe, 1.1, 10, Size.Empty); //the actual face detection happens here
foreach (var face in faces)
{
imageFrame.Draw(face, new Bgr(Color.BurlyWood), 3); //the detected face(s) is highlighted here using a box that is drawn around it/them
}
}
ImageViewer.Show(imageFrame);
// imgCamUser.Image = imageFrame;
}
public void TestCrop(Bitmap bmp)
{
//_capture = new Capture();
var imageFrame = new Image<Bgr, byte>(bmp); //_capture.QueryFrame();
_cascadeClassifier = new CascadeClassifier(Application.StartupPath + "/haarcascades/haarcascade_frontalface_default.xml");
//using (var imageFrame = _capture.QueryFrame().ToImage<Bgr, Byte>())
//{
var result = new List<Image<Bgr, byte>>();
var grayframe = imageFrame.Convert<Gray, byte>();
var faces = _cascadeClassifier.DetectMultiScale(grayframe, 1.1, 10, Size.Empty); //the actual face detection happens here
foreach (var face in faces)
{
var copyImg = imageFrame.Copy();
copyImg.ROI = face;
result.Add(copyImg.Copy());
//imageFrame.Draw(face, new Bgr(Color.BurlyWood), 3); //the detected face(s) is highlighted here using a box that is drawn around it/them
}
ImageViewer.Show(imageFrame);
foreach (var image in result)
{
ImageViewer.Show(image);
}
// imgCamUser.Image = imageFrame;
}
}
...