Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Kinect和EMGU(OpenCV)-位图源问题_C#_Opencv_Kinect_Emgucv_Bitmapsource - Fatal编程技术网

C# Kinect和EMGU(OpenCV)-位图源问题

C# Kinect和EMGU(OpenCV)-位图源问题,c#,opencv,kinect,emgucv,bitmapsource,C#,Opencv,Kinect,Emgucv,Bitmapsource,好的,所以基本上我尝试将openCV与Kinect(微软新的Kinect 1.0 SDK)一起使用。我对C#和Kinect都很陌生。但是我想做的是使用EMGU(C#的openCV包装器)使用kinect进行面部识别。到目前为止,我已经成功地从kinect捕获了视频流,将其转换为EMGU图像,然后将其转换为Byte[]数组,以便我可以使用BitmapSource在屏幕上显示我的图像 虽然这很好,但当我尝试使用image类实际执行一些图像处理时,似乎会出现问题。它实际上似乎处理得很好,但不是很快。这

好的,所以基本上我尝试将openCV与Kinect(微软新的Kinect 1.0 SDK)一起使用。我对C#和Kinect都很陌生。但是我想做的是使用EMGU(C#的openCV包装器)使用kinect进行面部识别。到目前为止,我已经成功地从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();
  }
 }
}
(PImage是来自Kinect的流;bmpBytes是从图像转换而来的字节[])

因此,如果我注释掉执行图像处理的代码,所有来回转换都可以正常工作。当我添加图像处理代码时,我可以向控制台写入一些有用的数据,但图像不会显示。我还注意到“bmapa”没有很快更新。这是唯一明显的区别,除了在image1中没有显示之外

那么,我是否错误地使用了BitmapSource,或者是否有办法提高我的代码速度,或者降低BitmapSource的“刷新率”?因为当我在数据结构之间转换时,我从kinect获得了一个稳定的流,并且一切正常

谢谢, 布伦特

BitmapSource bmapa = BitmapSource.Create(PImage.Width, PImage.Height, 96, 96, PixelFormats.Bgr32, null, bmpBytes, PImage.Width * PImage.BytesPerPixel);

image1.Source = bmapa;