[英]Accessing an element of an Array in OpenCV
我正在嘗試獲取數組中元素的值,以便在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>
。
實際上,如果使用cv::Mat_<_Tp>
的模板版本,則可以通過Mat_<_Tp>::operator ()(int y, int x)
訪問像素值
cv::Mat_<double> M(3, 3);
for (int i = 0;i < 3; ++i) {
for (int j = 0;j < 3; ++j) {
std::cout<<M(i, j)<<std::endl;
}
}
這樣一來,如果稍后將template參數從double更改為float,則無需修改每個at()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.