【发布时间】:2019-03-27 07:28:59
【问题描述】:
我正在将 OpenCV 与 python 一起使用。我想用“white”颜色替换颜色范围。
颜色范围:
HMin = 130
SMin = 65
VMin = 135
HMax = 200
SMax = 160
VMax = 255
我知道如何将特定像素值替换为另一个值:
im[np.where((im == [20,78,90]).all(axis = 2))] = [0,0,100]
cv2.imwrite('output.png', im)
那么,您知道我如何使用此方法将 一个范围内的所有像素 的 HSV 值而不是特定的像素值设置为另一个值吗?
【问题讨论】:
-
用 cv2.inRange 得到一个二进制图像,然后你可以做
im[binaryImage == 255] = [0,0,100] -
@api55 你的意思是
HSV-img = cv2.cvtColor(original-img, cv2.COLOR_BGR2HSV) minR = np.array([HMin, SMin, VMin]) maxR = np.array([HMax, SMax, VMax]) orange-mask = cv2.inRange(HSV-img, minR , maxR) original-img[orange-mask]=[0,0,100] -
看看答案,@Silencer 做了我想说的,有图片和一切:) 但你所说的或多或少是 original-img[orange-mask > 0] =[0,0,100]