EmguCV を使用して、Web カメラから画像をキャプチャするには、以下を使用します。
Capture cap = new Capture(0);
Image < Bgr, byte > nextFrame = cap.QueryFrame();
...
...
しかし、Kinect から画像をキャプチャする方法がわかりkinectCapture
ません。クラスを試してみましたが、うまくいきませんでした。ありがとう
基本的に、ColorStream から Image をキャプチャして、EmguCV Image クラスに変換する必要があります。
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);
}
EmguCVを使用する場合、通常は別のライブラリを使用してKinectにアクセスします。たとえば、Kinect For Windows SDK、またはOpenNIです。次に、OpenNIまたはSDKを使用してカメラにアクセスした後、EmguCVのツールを使用して画面に投影した画像を編集できます。OpenNIとSDKでEmguCVを使用する方法のいくつかのリンクがあります
お役に立てれば!