使用 EmguCV,从我们使用的网络摄像头捕获图像:
Capture cap = new Capture(0);
Image < Bgr, byte > nextFrame = cap.QueryFrame();
...
...
但我不知道如何从 Kinect 捕获图像,我尝试过
kinectCapture
类,但它对我不起作用。谢谢
最佳答案
基本上,您需要从 ColorStream 捕获和 Image 并转换为 EmguCV Image 类:
从 Windows BitMap (Kinect ColorStream) 转换为 EmguCV 图像:
您有一个 Windows Bitmap 变量,其中包含 Kinect Frame。
Bitmap bmap = new Bitmap(weightFrame,HeightFrame,System.Drawing.Imaging.PixelFormat.Format32bppRgb);
...
//Here is the code where you capture the image in the ColorFrameReady....
...
Image<Bgr,Byte> frameActualKinect = bmap.ToOpenCVImage<Bgr, Byte>();
进行检测:
调整大小
currentFrame = frameActualKinect.Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
//Convert it to Grayscale
gray = currentFrame.Convert<Gray, Byte>();
//Face Detector
MCvAvgComp[][] facesDetected = gray.DetectHaarCascade(face, 1.2, 10, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,new System.Drawing.Size(20, 20));
P.D(辅助方法):
public static Image<TColor, TDepth> ToOpenCVImage<TColor, TDepth>(this Bitmap bitmap)
where TColor : struct, IColor
where TDepth : new()
{
return new Image<TColor, TDepth>(bitmap);
}
关于c# - 将 Kinect 与 Emgu CV 结合使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11821575/