首先抱歉我的英语
我正在使用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的框架宽度
答案 0 :(得分:0)
谢谢!正如Esteban先前所建议的那样,而不是使用从memcpy
到IFTResult
每个字节的cv::Mat
y复制字节