With EmguCV, to capture an image from a web-cam we use :
Capture cap = new Capture(0);
Image < Bgr, byte > nextFrame = cap.QueryFrame();
...
...
But I don't know how to capture images from my Kinect, I have tried kinectCapture
class but it didn't work with me.
Thanks
Basically , you need to capture and Image from the ColorStream and convert to a EmguCV Image class :
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>();
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);
}
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With