自定义(更改)图像(像素)颜色-Python

时间:2019-04-13 04:22:14

标签: python image-processing python-imaging-library pixel

我想自定义图像颜色以制作具有不同颜色的相似图像。

示例:

Logo_1 logo_2

对于上面的图片,我想将红色替换为其他颜色,例如蓝色,绿色,黄色,黑色等。

我尝试过:

maximum = max([h['high'] for h in response])
print(maximum)

上面的代码是非常常见的代码,建议对大多数代码使用。 但是很难替换掉“ _colors ”列表中的像素 输出图像是:

wrong Output

任何解决上述问题的方法?有什么聪明的方法可以使用机器学习来解决这个问题?使用其他编程语言的解决方案吗?

1 个答案:

答案 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显示的刻度。

green

purple