Мне нужно создать переменную 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]);