我想自定义图像颜色以制作具有不同颜色的相似图像。
示例:
对于上面的图片,我想将红色替换为其他颜色,例如蓝色,绿色,黄色,黑色等。
我尝试过:
maximum = max([h['high'] for h in response])
print(maximum)
上面的代码是非常常见的代码,建议对大多数代码使用。 但是很难替换掉“ _colors ”列表中的像素 输出图像是:
任何解决上述问题的方法?有什么聪明的方法可以使用机器学习来解决这个问题?使用其他编程语言的解决方案吗?
答案 0 :(得分:2)
我对PIL不熟悉,听说速度很慢。这是OpenCV版本:
# for red color, it's easier to work with negative image
# since hue is in [170, 180] or [0,10]
hsv_inv = cv2.cvtColor(255-img, cv2.COLOR_BGR2HSV)
# these are cyan limit, but we're working on negative image, so...
lower_range = np.array([80,0,0])
upper_range = np.array([100,255,255])
# mask the red
mask = cv2.inRange(hsv_inv, lower_range, upper_range)
# replace red by green
green_hsv = hsv_inv.copy()
green_hsv[np.where(mask)] += np.array([60,0,0], dtype=np.uint8)
green_img = 255 - cv2.cvtColor(green_hsv, cv2.COLOR_HSV2BGR)
purple_hsv = hsv_inv.copy()
purple_hsv[np.where(mask)] -= np.array([30,0,0], dtype=np.uint8)
purple_img = 255 - cv2.cvtColor(purple_hsv, cv2.COLOR_HSV2BGR)
结果是,请忽略我通过matplotlib显示的刻度。