我尝试将 boost::array rightCamInfo.K 转换为 opencv Mat cv::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]);
关于c++ - 将boost数组转换为opencv mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253354/