IFTResult到cvMat像素坐标

时间:2012-12-15 11:58:55

标签: c++ opencv kinect-sdk

首先抱歉我的英语 我正在使用Microsoft的Kinect SDK和面部跟踪API,并且我使用GetFaceRect函数获得了face rect。我现在要做的是将视频缓冲区转换为OpenCV Mat,然后使用OpenCV删除除脸部以外的所有内容。 要从视频帧转换为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的框架宽度

1 个答案:

答案 0 :(得分:0)

谢谢!正如Esteban先前所建议的那样,而不是使用从memcpyIFTResult每个字节的cv::Mat y复制字节