IFTResult к координатам пикселей cvMat

прежде всего извините за мой английский
Я использую Microsoft Kinect SDK с API отслеживания лица, и я получаю лицо прямо с GetFaceRect функция. Что я хочу сейчас сделать — это конвертировать видео буфер в 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 с шириной кадра

2

Решение

Спасибо! Как ранее предлагал Эстебан, вместо использования memcpy y скопировать байт на байт из IFTResult в cv::Mat

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]