首先对我的英语感到抱歉,我正在使用带有面部跟踪 API 的 Microsoft 的 Kinect SDK,并且我正在使用GetFaceRect
功能获得面部矩形。我现在要做的是将视频缓冲区转换为 OpenCV Mat
,然后使用 OpenCV 删除除面部之外的所有内容。要将视频帧转换为 OpenCV mat,我使用以下命令:
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 到帧的宽度