无法将OpenCV Mat转换为dlib arrray2D

问题描述

我正在使用以下代码将cv :: Mat转换为dlib array2D(通过dlib相关性跟踪器跟踪对象是必需的)

int main()
{

cv::Mat img = cv::imread("wine_plant.jpg");
dlib::cv_image<dlib::bgr_pixel> dlib_img(img);



return 0;
}

但是在调试时,我收到以下错误消息。

Error   C2440   'initializing': cannot convert from 'const cv::Mat' to 'IplImage'   yolo_cywine c:\users\antho\documents\c++\dlib-19.7\source\dlib\opencv\cv_image.h    37  

基于在同一问题上已经提出的其他问题,我也尝试过

cv::Mat img = cv::imread("wine_plant.jpg");
dlib::cv_image<unsigned char> dlib_img(img);

但结果相同。

我错过了什么还是我做错了什么?你能帮我吗?

谢谢。

解决方法

您的dlib版本addLegend似乎太旧了。从dlib 19.7网站下载时,我也遇到类似的错误。它已在github上修复,但是http://dlib.net/在使用时未包含这些修复。对我来说,从源头编译解决了它。较新的dlib版本应该可以解决此错误。

这些问题讨论了这个问题,

https://github.com/davisking/dlib/issues/1955

https://github.com/davisking/dlib/issues/1949

https://github.com/davisking/dlib/issues/2071

更改为19.19

https://github.com/davisking/dlib/commits/master/dlib/opencv/cv_image.h

https://github.com/davisking/dlib/commit/54a9a5bbf3267386dd39a82fb792bab1bb60796c#diff-7c8f1a39b770981bf2d3a132da6f083b130b7c52cd994dbccb1d2115f0d729fd

https://github.com/davisking/dlib/commit/a4bf6e1e6afef5c55414164dc4414908d91a8be5#diff-7c8f1a39b770981bf2d3a132da6f083b130b7c52cd994dbccb1d2115f0d729fd