我尝试将 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)。显然有一些转换错误。怎么了?我是否为矩阵选择了错误的类型,或者这种数组类型是否适合?
答案 0 :(得分:5)
您应该使用ng-if="movie.released && movie.inTheaters"
而不是CV_32F
并指向CV_64F
的第一个元素
tempK
或
K = cv::Mat(3, 3, CV_32F, &tempK[0]);