我试图通过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格式之间的转换可能导致此问题?
答案 0 :(得分:1)
您粘贴的错误说
您提供的像素类型与open cv Mat对象使用的像素不匹配。
它还会告诉您图像是单通道的。所以它不是BGR图像。它看起来像8位灰度,所以你需要使用像unsigned char这样的像素作为像素,因为这是你拥有的图像类型。