Using Kinect with Emgu CV

こ雲淡風輕ζ 提交于 2019-11-28 22:08:07
acandaldev

Basically , you need to capture and Image from the ColorStream and convert to a EmguCV Image class :

Conversion to EmguCV Image from Windows BitMap (Kinect ColorStream):

You have a Windows Bitmap variable, where holds 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>();

Make the detection:

Resize

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 (The helper method) :

public static Image<TColor, TDepth> ToOpenCVImage<TColor, TDepth>(this Bitmap bitmap)
        where TColor : struct, IColor
        where TDepth : new()
    {
        return new Image<TColor, TDepth>(bitmap);
    }
Liam McInroy

When using EmguCV, you usually use another library to access the Kinect. For example, The Kinect For Windows SDK, or OpenNI. Then after accessing the camera using OpenNI or the SDK, you can edit the image that you project on the screen using EmguCV's tools. Here's some links of how to use EmguCV with OpenNI and the SDK

Hope this helps!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!