현재 Emblem CV 및 Kinect for Windows SDK v1을 사용하는 얼굴 인식 WPF 응용 프로그램에서 작업 중입니다. Emgu CV로 이전에 동일한 응용 프로그램을 만들었지 만 웹캠을 사용하여 이미지 프레임을 캡처했습니다. 웹캠을 사용하면 카메라 프레임을 가져 와서 Emc CV의 이미지 <> 형식으로 변환하여 얼굴 인식 알고리즘으로 처리 할 수 있습니다. 하지만 지금, 컬러 RGB 카메라를 Kinect 하드웨어로 사용할 때, 그렇게 할 수 없습니다. ImageColorFrame 유형 (Windows 용 Kinect SDK)에서 Image <> (Emgu CV) 유형으로 암시 적 또는 명시 적 변환이 작동하지 않습니다. 내가 어떻게 할 수 있니?Kinect for Windows SDK v1에서 ImageColorFrame의 유형을 Emgu Cv의 이미지 <> 유형으로 변환하는 방법은 무엇입니까?
참고로 변환하는 대신 아래 코드 에서처럼 <> 이미지 유형의 bytes 속성을 지정하려고합니다. 그러나 그것은 효과가 없습니다. 미리 감사드립니다.
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);
}
}
이 답변 : HTTP :를 //stackoverflow.com/a/10848309/1039947는 ColorImageFrame에서 비트 맵을 가져와 nextFrame = new Image를 시도하는 방법을 보여줍니다. (ImageToBitmap (colorFrame)); (ImageToBitmap 메서드는 해당 답변에 있음) –
kmp