我一直在努力让它发挥作用,但确实遇到了麻烦,所以非常感谢您的帮助。
使用下面的代码,我想将具有指定 RGB 值的特征更改为白色,并将图像中的所有其他特征更改为黑色(即基本上从图像中提取特征。不幸的是,尽管我可以将我想要的特征' extract' 很好,当我尝试删除背景颜色时(我一直在尝试使用
mask2 = ((red != r1) & (green != g1) & (blue != b1))
data[:,:,:4][mask2] = [rb, gb, bb, ab]
但这似乎选择了除红色 == r1 或绿色 == g1 等像素之外的任何像素,给我留下了一个非常“嘈杂”的背景图像。)有谁知道一种方法来逐字提取具有指定 RGB 值的这些像素,或者重新着色背景像素的更好方法?
Thanks
import numpy as np
from PIL import Image
im = Image.open('/home/me/nh09sw.tif')
im = im.convert('RGBA')
data = np.array(im)
r1, g1, b1 = 246, 213, 139 # Original value
rw, gw, bw, aw = 255, 255, 255, 255 # Value that we want to replace features with
rb, gb, bb, ab = 0, 0, 0, 255 #value we want to use as background colour
red, green, blue, alpha = data[:,:,0], data[:,:,1], data[:,:,2], data[:,:,3]
mask = ((red == r1) & (green == g1) & (blue == b1))
data[:,:,:4][mask] = [rw, gw, bw, aw]
im = Image.fromarray(data)
im.save('/home/me/nh09sw_recol.tif')