2013-08-01 50 views
0

我需要在Android上修改/訪問我的墊子,但確實很慢(在3500 * 100墊子上運行需要大約2分鐘)。從Android上的Opencv訪問Mat的快速方法?

我需要設置一些值爲0,但不是全部,我用這條線來修改它。

this.getMyMat().put(i, j, 0); 

任何想法讓它快一點?我在C++代碼至少需要50倍的運行時間更短,這樣做是這樣的:

((myMat.data + myMat.step*row))[j] = 0 
+0

您使用什麼標準來確定像素是否應爲'0'?根據您使用的標準,OpenCV很可能具有內置函數來完成此操作。 – Aurelius

+0

例如,我想將0放在一個完整的行或一組行上。 (但也適用於cols,所以我真的需要保持我的墊子的2D形狀)。 – Tiffado

回答

1

您可以使用rowRange()colRange()提取要被清零的小矩陣,並調用setTo()實際上在填寫值。這將比逐個像素迭代更快。

Mat rows = this.getMyMat().rowRange(0,3); 
rows.setTo(new Scalar(0)); 
+0

它比我第一種做法更好^^ – Tiffado