使用Kinect和Emgu CV

时间:2012-08-06 01:28:35

标签: c# kinect emgucv

使用EmguCV,我们使用以下网络摄像头捕获图像:

Capture cap = new Capture(0);

Image < Bgr, byte > nextFrame = cap.QueryFrame();

...

...

但是我不知道如何从我的Kinect中捕获图像,我已经尝试了kinectCapture课程,但它并不适用于我。 谢谢

2 个答案:

答案 0 :(得分:11)

基本上,您需要从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);
    }

答案 1 :(得分:2)

使用EmguCV时,通常使用另一个库来访问Kinect。例如,The Kinect For Windows SDKOpenNI。然后在使用OpenNI或SDK访问摄像机后,您可以使用EmguCV工具编辑在屏幕上投影的图像。以下是如何将EmguCV与OpenNI和SDK一起使用的一些链接

希望这有帮助!