まず第一に私の英語で申し訳ありませんが、顔追跡 API で Microsoft の Kinect SDK を使用しています。関数で顔の rect を取得していGetFaceRect
ます。私が今やりたいことは、ビデオ バッファーを OpenCV に変換し、OpenCVMat
で顔以外のすべてを削除することです。ビデオ フレームから OpenCV マットに変換するには、次を使用します。
cv::Mat * openCVImg = new cv::Mat(cameraConfig.Height, cameraConfig.Width, CV_8UC4);
memcpy(openCVImg->data, m_KinectSensor.GetVideoBuffer()->GetBuffer(), m_KinectSensor.GetVideoBuffer()->GetBufferSize());
問題は、顔の四角形を再度描画しようとしたときですが、今回は OpenCVを使用Mat
して四角形が左に移動し、顔と一致しません。
私は、画像がストライドで来るかもしれないことを読みましたが、
m_KinectSensor.GetVideoBuffer()->GetStride() / m_KinectSensor.GetVideoBuffer()->GetBytesPerPixel()
フレームの幅はほぼ640になりました