【发布时间】:2020-09-14 07:41:56
【问题描述】:
我有一张如下图
在这张图片中,我想将黄色数字转换为BLACK 颜色和RED 区域为灰色。不应更改已经黑色和灰色的区域。
我该怎么做?任何人都可以帮忙吗?
我看了几个问题,但我无法弄清楚。此外,由于黄色和红色的颜色并不完全相同,而是在一个范围内,我不能直接更换颜色。
CV2 或 PIL 都可以。
如果必须使用 HSV 值,请告诉我如何计算范围。已经提出了这个问题,并且已经有一些答案,但我无法掌握它们,因此任何额外的指导都会有所帮助
我期望的输出类似于下面的图片(通过在 Gimp 中绘制像素创建)。不完全是你看到的,但你知道我在找什么。
更新 我最终使用的解决方案如下。这使得所有黄色字母都变成黑色,这对我来说已经足够了(我认为,通过类似的方法,所有红色区域也可以变成灰色)
img = Image.open('Testpic.jpg').convert('RGB')
roi = img.crop((652,125,697,295))
orig_color1 = (210,140,0)
orig_color2 = (210,210,210)
replacement_color = (4,4,4)
roi = roi.resize((288, 1014), Image.ANTIALIAS)
data = np.array(roi)
data[((data >= orig_color2)).all(axis = -1)] = (255,0,0)
data[((data >= orig_color1)).all(axis = -1)] = replacement_color
data[((data == (255,0,0))).all(axis = -1)] = (255,255,255)
img2 = Image.fromarray(data, mode='RGB')
【问题讨论】:
标签: python python-3.x opencv python-imaging-library