将boost数组转换为open cv mat

BeJ*_*Jay 2 c++ boost opencv

我尝试将转换的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).显然有一些转换错误.怎么了?我是否为矩阵选择了错误的类型,或者这种数组类型是否合适?

smt*_*tsp 5

你应该使用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)