Хорошо, поэтому в основном я пытаюсь использовать openCV с Kinect (новый Microsoft Kinect 1.0 SDK).Я очень плохо знаком с C # и Kinect.Но я хочу использовать kinect для распознавания лиц с помощью EMGU (оболочка openCV для C #).До сих пор я успешно захватил видеопоток из kinect, преобразовал его в изображение EMGU <>, а затем преобразовал его в массив Byte [], чтобы я мог использовать BitmapSource для отображения своего изображения на экране.
Хотя это работает нормально, проблемы, похоже, возникают, когда я пытаюсь выполнить некоторую обработку изображения с помощью класса Image <>.Кажется, что на самом деле он работает нормально, но не очень быстро.Это не обязательно будет проблемой для меня, но теперь BitmapSource вообще не отображается.
Вот пример моего кода для обнаружения лиц:
img = new Image<Bgr, byte>(clone);
haar = new HaarCascade("directory");
Image<Gray, Byte> gray;
using (HaarCascade face = new HaarCascade("blablabla.xml"))
using (HaarCascade eye = new HaarCascade("blarg.xml"))
{
using ( gray = img.Convert<Gray, Byte>()) //Convert it to Grayscale
{
MCvAvgComp[] facesDetected = face.Detect(gray, 1.1, 1, mgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new System.Drawing.Size(img.Width / 8, img.Height / 8));
foreach (MCvAvgComp f in facesDetected)
{
img.Draw(f.rect, new Bgr(System.Drawing.Color.Blue), 2);
imgDoneProc = img.ToBitmap();
}
}
}
ТогдаЯ использую BitmapSource.Create ():
BitmapSource bmapa = BitmapSource.Create(PImage.Width, PImage.Height, 96, 96, PixelFormats.Bgr32, null, bmpBytes, PImage.Width * PImage.BytesPerPixel);
image1.Source = bmapa;
(PImage - поток из Kinect; bmpBytes - это байт [], преобразованный из изображения <>)
Итак, если язакомментируйте код, который выполняет обработку изображений, все преобразования туда и обратно работают нормально.Когда я добавляю код proc изображения, я могу записать в консоль некоторые полезные данные, но изображение не отображается.Я также заметил, что bmapa не обновляется быстро.Это единственное заметное отличие, кроме того, что ничего не отображается на изображении 1.
Итак, я неправильно использую BitmapSource или есть способ ускорить мой код или, возможно, замедлить «частоту обновления» BitmapSource?Потому что, когда я просто конвертирую между структурами данных, я получаю стабильный поток от kinect, и все работает отлично.
Спасибо, Брент