4

EmguCV を使用して、Web カメラから画像をキャプチャするには、以下を使用します。

Capture cap = new Capture(0);

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

...

...

しかし、Kinect から画像をキャプチャする方法がわかりkinectCaptureません。クラスを試してみましたが、うまくいきませんでした。ありがとう

4

2 に答える 2

11

基本的に、ColorStream から Image をキャプチャして、EmguCV Image クラスに変換する必要があります。

Windows BitMap (Kinect ColorStream) から EmguCV 画像への変換:

Kinect フレームを保持する Windows ビットマップ変数があります。

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));

PD (ヘルパー メソッド) :

public static Image<TColor, TDepth> ToOpenCVImage<TColor, TDepth>(this Bitmap bitmap)
        where TColor : struct, IColor
        where TDepth : new()
    {
        return new Image<TColor, TDepth>(bitmap);
    }
于 2012-08-21T12:01:24.017 に答える
2

EmguCVを使用する場合、通常は別のライブラリを使用してKinectにアクセスします。たとえば、Kinect For Windows SDK、またはOpenNIです。次に、OpenNIまたはSDKを使用してカメラにアクセスした後、EmguCVのツールを使用して画面に投影した画像を編集できます。OpenNIとSDKでEmguCVを使用する方法のいくつかのリンクがあります

お役に立てれば!

于 2012-08-06T14:40:14.743 に答える