我想计算Image的直方图。 我必须使用面膜。我的面具应该看起来像黑白图像? 黑色忽略空间,白色计算?
创建Mask。我将白色像素(R> 220& G> 220& B> 220)替换为黑色,将其他像素替换为白色。
我做得对吗?
答案 0 :(得分:2)
如果你想在图像部分计算每个通道上像素值小于220的直方图,那么制作蒙版的解决方案是正确的。
另外,请注意不要替换原始图像上的像素。只需创建一个频道cv::Mat
,其高度和宽度与原始图片相同。然后,根据原始图像填充像素。
你也可以使用cv::inRange
函数制作这样的掩码:
cv::MAT mask;
// make inverted mask in order to avoid masking pure red, green or blue
cv::inRange(original_image, cv::Scalar(220, 220, 220), cv::Scalar(255, 255, 255), mask);
// make non-inverted mask
mask = 255 - mask;