我尝试将转换的boost ::阵列rightCamInfo.K到OpenCV的垫CV ::垫ķ.我没有为此设置找到任何函数,所以我写了一个迭代方法:
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);
Run Code Online (Sandbox Code Playgroud)
但这给了我奇怪的结果.给定数据的范围在400和0之间,结果矩阵大约为5*10 ^( - 315).显然有一些转换错误.怎么了?我是否为矩阵选择了错误的类型,或者这种数组类型是否合适?
你应该使用CV_32Fnot CV_64F并指出第一个元素tempK
K = cv::Mat(3, 3, CV_32F, &tempK[0]);
Run Code Online (Sandbox Code Playgroud)
要么
Mat K(3, 3, CV_32F, &tempK[0]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
602 次 |
| 最近记录: |