В настоящее время я работаю над приложением WPF для обнаружения лиц, используя Emgu CV и Kinect для Windows SDK v1.Я когда-либо делал то же самое приложение с Emgu CV, но с помощью веб-камеры, чтобы захватить кадр изображения.Используя веб-камеру, несложно получить кадр камеры и преобразовать его в тип изображения <> в Emgu CV, чтобы я мог обработать его с помощью алгоритма распознавания лиц.Но сейчас, когда я использую цветную RGB камеру из аппаратного обеспечения Kinect, я не могу этого сделать.Ни явное, ни явное преобразование из типа ImageColorFrame (в Kinect для Windows SDK) в тип Image <> (в Emgu CV) не работают.Как я мог это сделать?
К вашему сведению, вместо того, чтобы делать преобразование, я также пытаюсь назначить свойство байтов типа Image <> как этот код ниже.Но это тоже не работает.Заранее спасибо.
using (ColorImageFrame colorFrame = e.OpenColorImageFrame())
{
if (colorFrame == null)
{
return;
}
byte[] pixels = new byte[colorFrame.PixelDataLength];
colorFrame.CopyPixelDataTo(pixels);
nextFrame = new Image<Bgr, byte>(448, 336);
nextFrame.Bytes = pixels;
using (nextFrame.Bitmap = colorFrame.ToBitmap())
{
grayImage = new Image<Gray, byte>(448, 336);
grayImage = nextFrame.Convert<Gray, Byte>();
HaarCascade faceHaarCascade = new HaarCascade("" + Environment.CurrentDirectory + "\\haarcascade_frontalface_alt_tree.xml");
MCvAvgComp[][] facesDetected = grayImage.DetectHaarCascade(
faceHaarCascade,
1.1,
10,
Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
new System.Drawing.Size(20, 20));
foreach (MCvAvgComp face in facesDetected[0])
{
// draw rectangle in the facial image
nextFrame.Draw(face.rect, new Bgr(System.Drawing.Color.Blue), 2);
}
imageVideoRGB.Source = ToBitmapSource(nextFrame);
}
}