我试图获取数组中元素的值,以便在 if
语句中使用它,但不幸的是,以下代码对我不起作用。 comp
的 cout
与数组 C 的第一个元素不匹配。我是 OpenCV 的新手,因此非常感谢您的帮助。
Mat A = (Mat_<double>(2,1) << u, v);
Mat B = (Mat_<double>(2,6) << -1/Z, 0 , x/Z , x*y , -(x*x+1),y,
0 ,-1/Z, y/Z ,y*y+1, -x*y ,-x);
Mat pinvB = B.inv(DECOMP_SVD);
Mat C=pinvB*A; // 6x1 Array
float comp = C.at<float>(0,0);
cout << "comp " << comp << endl; //This value does not match C[0,0]
cout << "C " << C << endl;
if (comp < 0.0001){
//process
}
最佳答案
你的 Mat_<double>
实例内部存储 double
秒。当您这样做时:
float comp = C.at<float>(0,0);
您正在尝试使用一些形成 double 的位,并将它们解释为 float
.浮点表示意味着 double
的一半位不要翻译成有意义的float
(假设一个平台的 float 大小是 double 的一半,这很常见)。所以,调用C.at<double>
相反。
关于c++ - 在 OpenCV 中访问数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17004157/