OpenCV用另一个值替换特定的像素值

elm*_*ass 6 c++ opencv replace pixel colors

我想在图像中检测特定像素值(假设无符号8位1通道图像中的128),cv::Mat并将具有该特定值的所有像素的值替换为另一个值(用120替换每个128).有没有有效的方法呢?或者我应该逐像素地执行搜索和断言操作?

我开始编码但无法完成.这是我的代码的一部分:

cv::Mat source; 
unsigned oldValue = 128;
unsigned newValue = 120;

cv::Mat temp = (source == oldValue);
Run Code Online (Sandbox Code Playgroud)

Mik*_*iki 11

你可以使用setTo面具:

Mat src;
// ... src is somehow initialized

int oldValue = 128;
int newValue = 120;

src.setTo(newValue, src == oldValue); 
Run Code Online (Sandbox Code Playgroud)