将openCV Mat转换为Dlib的图像

时间:2016-12-16 19:15:37

标签: 3d camera dlib

我试图通过Zed相机而不是普通网络摄像头检索输入,将dlib与zed 3D相机整合到webcam_face_pose_ex中。

尝试匹配dlib使用的捕获图像矩阵时会出现问题。在dlib中,我必须将我从Zed相机中检索到的图像的cv :: Mat转换为dlib的特殊格式,如下所示:

cv::Mat temp = sl::zed::slMat2cvMat(left); // converts the zed Mat to openCV mat     
cv_image<bgr_pixel> cimg(temp); // converts the opencv matrix to dlib matrix` 

执行第二步时,我收到以下错误:

Error detected at line 36.
Error detected in file /home/yomna/Resources/apps/dlib/dlib-master/dlib/../dlib/opencv/cv_image.h.
Error detected in function dlib::cv_image<pixel_type>::cv_image(cv::Mat) [with pixel_type = dlib::bgr_pixel].

Failing expression was img.depth() == cv::DataType<typename pixel_traits<pixel_type>::basic_pixel_type>::depth && img.channels() == pixel_traits<pixel_type>::num.
The pixel type you gave doesn't match pixel used by the open cv Mat object.
     img.depth():    0
     img.cv::DataType<typename pixel_traits<pixel_type>::basic_pixel_type>::depth: 0
     img.channels(): 1
     img.pixel_traits<pixel_type>::num: 3

您是否知道openCV图像矩阵与dlib格式之间的转换可能导致此问题?

1 个答案:

答案 0 :(得分:1)

您粘贴的错误说

  

您提供的像素类型与open cv Mat对象使用的像素不匹配。

它还会告诉您图像是单通道的。所以它不是BGR图像。它看起来像8位灰度,所以你需要使用像unsigned char这样的像素作为像素,因为这是你拥有的图像类型。