首页 > 解决方案 > 将特定范围内的所有BGR值转换为白色(255,255,255)

问题描述

我输入了 png 图像,我想将属于特定范围的所有像素从 (2,2,2) 到 (255,255,255) 转换为白色 (255,255,255)

im = cv2.imread('3.png')  # I am reading the image

lower_range = np.array([2,2,2]). # I specific the lower range
upper_range = np.array([255,255,255]) # I specify the upper range

im[np.where((im == [0,0,255]).all(axis = 2))] = [255,255,255]  # converts all red pixels to white
cv2.imwrite('out.png', im)

我的问题是如何修改 im[np.where((im == [0,0,255]).all(axis = 2))] = [255,255,255]. 这样它就覆盖了第 2 行和第 3 行中提到的颜色范围,并将它们全部转换为白色。

标签: python-3.xopencv

解决方案


cv2.inRange会产生一个蒙版,可用于根据需要更改颜色。

mask1 = cv2.inRange(im, lower_range, upper_range)
im[np.where(mask)] = [255,255,255]

附带说明一下,您的颜色范围非常大(几乎涵盖了所有内容)。


推荐阅读