2016-03-03 245 views
3

我目前正在將OpenCV 2.4.9中的程序轉移到OpenCV 3.1.0,但是我一直無法從Mat s更改爲UMat s。我使用Mat s存儲我需要從中訪問單個二進制像素值的圖片。在2.4.9我做到了,像這樣:OpenCV 3.1.0:從UMat訪問單個元素

Mat test_mat; 
test_mat.at<uchar>(row,column); 

不幸的是,我一直沒能找到一種方法,做同樣的與UMat小號OpenCV的事情3.1.0提供了通過我的研究。有沒有人有任何想法?道歉,如果這是一件非常微不足道的事情。

+0

如果有人想知道爲什麼我這樣做,我需要3.1.0提供的處理速度提升超過2.4.9 –

+0

如果我的答案適合您,[標記爲已接受](http://meta.stackexchange .COM /問題/ 5234 /如何-不接受-的回答工作)。如果沒有,請添加評論,要求澄清或更正(如果需要的話)(我想你只能根據你當前的聲望對自己的問題發表評論,但不用擔心我會閱讀它)。 – Nacho

回答

2

嘗試以下操作:

UMat test_umat; 
test_umat.getMat(ACCESS_READ).at<uchar>(row, column); 

不同的訪問標誌是:

  • ACCESS_READ
  • ACCESS_WRITE
  • ACCESS_RW
  • ACCESS_FAST
+1

該命令轉換爲失去UMat性能的cv :: Mat()。所以問題應該是,在UMat類中是否有類似的函數.at()?這對我非常有幫助。 – uelordi

+0

你是對的,opencv內部使用.getMat(Access)來訪問函數中的特定元素。 – uelordi