2013-08-01 51 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