1
В настоящее время я пытаюсь написать небольшую программу, определяющую грани.Вырезать изображение EmguCV
Я хочу вырезать серого кадра для обнаружения на куски размера прямоугольников обнаруженных лиц.
Это мой метод работы:
public List<PreviewImage> GetDetectedSnippets(Capture capture, ProcessType processType)
{
var mat = capture?.QueryFrame();
var imageList = new List<PreviewImage>();
if (mat == null)
return imageList;
var imageframe = mat.ToImage<Bgr, byte>();
var grayframe = imageframe.Convert<Gray, byte>();
Rectangle[] faces = null;
try
{
switch (processType)
{
case ProcessType.Front:
{
faces = _cascadeFrontDefault.DetectMultiScale(grayframe, 1.25, 10, Size.Empty);
}
break;
case ProcessType.Profile:
{
faces = _cascadeProfileFace.DetectMultiScale(grayframe, 1.25, 10, Size.Empty);
}
break;
default:
{
return imageList;
}
}
}
catch (Exception ex)
{
Debug.WriteLine("Could not process snapshot: " + ex);
return imageList;
}
foreach (var face in faces)
{
var detectedImage = imageframe.Clone();
detectedImage.Draw(face, new Bgr(Color.BlueViolet), 4);
var detectedGrayframe = grayframe.GrabCut(face, 1); // This isn't working. Here should the grayframe be cutted into a smaller piece.
imageList.Add(new PreviewImage(detectedImage, detectedGrayframe));
}
return imageList;
}
И это класс previewImage:
public class PreviewImage
{
public Image<Bgr, byte> Original { get; }
public Image<Gray, byte> Grayframe { get; }
public PreviewImage(Image<Bgr, byte> original, Image<Gray, byte> grayframe)
{
Original = original;
Grayframe = grayframe;
}
}
Как можно вырезать grayframe в кусок с размером данного прямоугольника?
Это работало огромное спасибо! – chris579