Преобразование между cv::Mat и arma::mat
1 ответ
Решение
OpenCV-х Mat
имеет указатель на свои данные. У броненосца есть конструктор, который способен читать из внешних данных. Их легко собрать. Помните, что Armadillo хранит в мажорном порядке, тогда как OpenCV использует мажорный ряд. Я полагаю, вам нужно добавить еще один шаг для преобразования, до или после.
cv::Mat opencv_mat; //opencv's mat, already transposed.
arma::mat arma_mat( reinterpret_cast<double*>opencv_mat.data, opencv_mat.rows, opencv_mat.cols )
cv::Mat
конструктор имеет форму, которая принимает указатель на данные, и arma::mat
имеет функцию для двойного * указателя на свои данные, называемую memptr().
Итак, если вы хотите конвертировать из arma::mat
в cv::Mat
, это должно работать:
cv::Mat opencv_mat( rows, cols, CV_64FC1, arma_mat.memptr() )