簡體   English   中英

在OpenCV中訪問數組的元素

[英]Accessing an element of an Array in OpenCV

我正在嘗試獲取數組中元素的值,以便在if語句中使用它,但不幸的是,以下代碼對我不起作用。 compcout與數組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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM