我有一个天气网站,但它缺少一个个性化的雷达。 我已经为我的国家(荷兰)找到了开放的雷达数据,但它已经有了特定的颜色。我发现python可以用图像lib来操作颜色,但是我对python并不是那么好。如何让python逐个像素地识别雷达颜色,并将它们更改为不同的颜色?示例图片:
答案 0 :(得分:0)
您的图片类型是GIF。这使得工作更加困难,因为GIF的颜色是基于调色板的,而不是RGB。 OpenCV目前不支持GIF,您最好的选择可能是Pillow。
所以,根据这个SO's post,您首先需要找到调色板,然后将调色板转换为RGB并找出哪个颜色在哪个像素中(可以通过使用{{3}等工具轻松完成})。
接下来,您在调色板中更改该颜色,并将此新调色板写回图像。
import Image
im = Image.open("path\to\nos_radar_285.gif")
try:
i = 0
while 1:
im.seek(im.tell() + 1)
# get color of each pixel
pal_inds = list(im.getdata())
pal_rgbs = list(im.convert('RGB').getdata())
# change a specific color to another color
# eg. (190, 5, 3) to (138, 218, 47)
pal_rgbs = [color if color != (190, 5, 3) else (138, 218, 47) for color in pal_rgbs]
# remake a new palette
pal_map = dict((zip(pal_inds, pal_rgbs)))
palette = [pal_map[i] for i in sorted(pal_map)]
flat_palette = [ind for rgb in palette for ind in rgb]
# put the palette back to image
im.putpalette(flat_palette)
im.show()
im.save('name%d' %i, 'jpg')
i+=1
except EOFError:
print 'done'
由于GIF包含多个帧,因此我将每个帧保存为单独的图像。要制作新的GIF,您可以自己在SO中搜索,这是另一回事。不要懒惰,尝试自己编码,并表明你努力解决问题,或者你会得到投票,通常没有答案。