прежде всего извините за мой английский
Я использую 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 с шириной кадра
Спасибо! Как ранее предлагал Эстебан, вместо использования memcpy
y скопировать байт на байт из IFTResult
в cv::Mat
Других решений пока нет …