Как конвертировать cv :: Mat в dlib :: array2d и typedef unsigned short int uint16_t - PullRequest
1 голос
/ 10 марта 2020

Я хочу использовать данные глубины кадра, полученные с помощью realsensed435i в алгоритме. И мне нужно получить данные типа dlib::array2d<uint16_t>. Но я не могу получить его напрямую. Итак, мой подход - сначала получить cv::Mat и затем преобразовать его в dlib::array2d<uint16_t>. И я попробовал сбросить код, но они не работают!

case1: dlib::assign_image(node.im, dlib::cv_image<uint16_t> (settings.inputMat));

case2: dlib::assign_image(node.im, dlib::cv_image< unsigned char >(settings.inputMat));

, когда я запускаю camke .. и make, это успешно. но когда я запускаю исполняемые двоичные файлы, возникает ошибка.

case1:hewenhui@hewenhui-Inspiron-7590:~/pre_PSLAM/D-KHT-master/bin$ ./testlib 

**************************** FATAL ERROR DETECTED ****************************

Error detected at line 36.
Error detected in file /usr/local/include/dlib/opencv/cv_image.h.
Error detected in function dlib::cv_image<pixel_type>::cv_image(const cv::Mat&) [with pixel_type = short unsigned int].

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: 2
     img.channels(): 3
     img.pixel_traits<pixel_type>::num: 1

******************************************************************************

已放弃 (核心已转储)

case2:
**************************** FATAL ERROR DETECTED ****************************

Error detected at line 36.
Error detected in file /usr/local/include/dlib/opencv/cv_image.h.
Error detected in function dlib::cv_image<pixel_type>::cv_image(const cv::Mat&) [with pixel_type = short unsigned int].

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: 2
     img.channels(): 3
     img.pixel_traits<pixel_type>::num: 1

******************************************************************************

已放弃 (核心已转储)

case3: dlib :: assign_image (node.im, dlib :: cv_image (settings.inputMat));

Это работает, но результат неверен.

Итак, есть ли у вас эффективные советы?

1 Ответ

0 голосов
/ 10 марта 2020
 dlib::assign_image(node.im, dlib::cv_image<ushort>(settings.inputMat));

успешно!

...