迭代所有像素,如果在范围内,则将像素更改为黑色,否则更改为白色

时间:2016-07-12 19:59:42

标签: python opencv pixel mask

所以基本上,我想迭代我的所有像素,如果它们正在使用范围,则将其RGB值更改为白色,否则更改为黑色。

我已经看过几个使用掩码的例子,但我对如何使用掩码来比较RGB值感到困惑。 我的范围是这样的

min_YCrCb = np.array([0,133,77],np.uint8) 
max_YCrCb = np.array([255,173,127],np.uint8)

首先,我在YCrCb中拥有我的形象img。如何创建一个遮罩,以便它可以看到RGB是否在范围内,一旦完成,我该如何将它们设置为黑白?

1 个答案:

答案 0 :(得分:1)

我认为inRange方法就是您所需要的。

因此,在您的示例中,您可以使用:

ans

对于cv_input中的每个像素,如果其值在给定范围内,则将其设置为255(全1),否则为0.如果需要反转,则可以使用# Keep in mind that OpenCV stores things in BGR order, not RGB lowerBound = cv.Scalar(0, 133, 770) upperBound = cv.Scalar(255, 173, 127) # this gives you the mask for those in the ranges you specified cv.InRange(cv_input, lowerBound, upperBound, cv_output); 方法。 / p>

Not