Как я могу инициализировать cv :: Mat с данными из массива с плавающей точкой
Мне нужно создатьcv::Mat
переменная, которая инициализируется с моими данными изfloat *
массив. Это должно быть основным, но у меня возникают проблемы с выяснением этого.
У меня есть код:
float *matrixAB = <120 floating point array created elsewhere>;
cv::Mat cv_matrixAB = cv::Mat(12, 10, CV_32F, &matrixAB);
ноcv_matrixAB
никогда не содержитfloat
значения, и что более важно, не совпадает с данными, содержащимися вmatrixAB
.
Если я изменю строку на:
cv::Mat cv_matrixAB = cv::Mat(12, 10, CV_32F, matrixAB);
тогдаcv_matrixAB.data
являются все0
, Я также пытался использоватьCV_64F
как тип, но я вижу то же поведение.
Может кто-нибудь помочь мне определить, где я иду не так? Согласноcv::Mat
документация конструктора, я должен быть в состоянии предоставить свои данные в видеfloat *
массив.
Обновить: немного больше информации здесь: даже следующий код не работает.printf
дисплеи63
что, конечно, не является ценностью вdummy_query_data
.
float dummy_query_data[10] = { 1, 2, 3, 4,
5, 6, 7, 8 };
cv::Mat dummy_query = cv::Mat(2, 4, CV_32F, dummy_query_data);
printf("%f\n", (float)dummy_query.data[3]);