如何在类似Matlab的OpenCV中设置具有特定值的完整矩阵

如何在类似Matlab的OpenCV中设置具有特定值的完整矩阵,opencv,opencv3.0,Opencv,Opencv3.0,我想在OpenCV中做一些类似于“A(A==val)=0”的事情,它在Matlab中工作。我实现了一些代码,但是它们太慢了(我使用过很多次) 我试着做一些类似的事情: MatIterator_<T> it; for (int i = 0; i < rows; i++){ tmp = in.row(i); end = tmp.end<T>(); for (it = tmp.begin<T>(); it != end; ++it) if

我想在OpenCV中做一些类似于“A(A==val)=0”的事情,它在Matlab中工作。我实现了一些代码,但是它们太慢了(我使用过很多次)

我试着做一些类似的事情:

MatIterator_<T> it;
for (int i = 0; i < rows; i++){
  tmp = in.row(i);
  end = tmp.end<T>();
  for (it = tmp.begin<T>(); it != end; ++it)
     if (*it == val) *it = 0;
}
MatIterator\uuit;
对于(int i=0;i

for(int i=0;i

我希望有一些建议。提前感谢。

这会将目标中42的所有元素设置为新值,12:

cv::Mat mask = target == 42;
target.setTo(12, mask);

您只需执行以下操作:target.setTo(12,target==42);你可以,但我想弄清楚
target==42
的类型是什么(垫子),因为如果不是这样,略读的人可能会认为它是lambda。我没有测量它,但我预计它会慢得多。我还没有找到一个OpenCV函数,它的运行速度并不令人惊讶,出于某种原因,它的运行速度非常慢。(因此,我发布它主要是出于一种纯粹的乐观情绪,也许他们把这件简单的事情做对了。也许。)
cv::Mat mask = target == 42;
target.setTo(12, mask);