将助推阵列转换为打开cv-mat

Convert boost array to open cv mat

本文关键字:cv-mat 转换 阵列      更新时间:2023-10-16

我试图将boost::array-rightCamInfo.K转换为opencv-Matcv::Mat K

float tempK[9];
cv::Mat K;
for (int i = 0; i < 9; i++) {
   tempK[i] = rightCamInfo.K[i];
}
K = cv::Mat(3, 3, CV_64F, &tempK);

但这给了我奇怪的结果。给定数据的范围在400和0之间,结果矩阵约为5*10^(-315)。因此,显然存在一些转换错误。怎么了?是我为矩阵选择了错误的类型,还是这个数组类型不合适?

您应该使用CV_32F而不是CV_64F,并指向tempK 的第一个元素

K = cv::Mat(3, 3, CV_32F, &tempK[0]);

Mat K(3, 3, CV_32F, &tempK[0]);