输入的A图像是一个完整的RGB图像, 输出的B图像是同一张图片,但是“调整”了R值。
我需要重新调整RGB值,使其在128到255之间,这样小于128的值就会被缩放到一个更高的值。
RMAX = 127
img = cv2.imread(filename) # load img
blue, green, red = cv2.split(img) # get single color
red = red*RMAX/255+128 # scale the color as I need
但这个值一直是错误的:
如果红色值为255 = 255*127/255+128,应该输出255,但返回128
为什么会发生这种情况?
编辑:
颜色值不需要每次重新计算,最好在开始时准备一个具有范围值的数组,然后用数组中的值替换当前值。
ValuesForRed = [0]*255
for i in range(0,255):
ValuesForRed[i]=i*127 / 255 + 128
如何替换数组中的值是现在的问题...
应该用相应的索引替换相应的值
i.e. red[45]= 0
ValuesForRed[0] = 128
red[45]= 128
我在Python Opencv cv2.LUT()如何使用的问题上提出了新的疑问。
inRange()
函数(在Python OpenCV中可用)来获取图像的掩模,该掩模指定像素的值位于129到255之间(包括边界)。有关详细信息,请参阅第二个答案。 - Alexey