2

首先对我的英语感到抱歉,我正在使用带有面部跟踪 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 到帧的宽度

4

1 回答 1

0

谢谢!正如 Esteban 之前建议的那样,而不是使用 memcpyy copy byte per byte from IFTResulttocv::Mat

于 2012-12-15T14:40:15.417 回答