2015-01-17 2 views
-3

날씨 사이트가 있지만 맞춤형 레이더가 없습니다. 내 나라 (네덜란드)의 공개 레이더 데이터를 찾았지만 이미 특정 색이 있습니다. 파이썬이 이미지 lib로 색상을 조작 할 수 있다는 것을 알았지 만, 파이썬에는 그렇게 좋지 않습니다. 파이썬으로 하여금 레이더 색상을 픽셀 단위로 인식하고 다른 색상으로 바꿀 수 있습니까? 샘플 이미지 :파이썬에서 특정 색상의 픽셀에 다른 RGB 값을 지정하십시오.

This http://www.weerplaza.nl/klanten/nos/nos_radar_285.gif

+0

특정 색상의 색상을 다른 색상이나 다른 색상으로 다른 색상으로 변경 하시겠습니까? 얻고 자하는 결과에 대해 더 자세하게 설명해 줄 수 있습니까? – dragon2fly

+0

레이더의 색상을 다른 색상으로 바꾸고 싶습니다. 이제 당신은 파란색의 그늘을 가지며, 더 낮은 강수량을 나타냅니다. 나는 그것이 황색의 음영이되기를 바랍니다. 황색과 적색으로 대표되는 더 높은 강수량은 적색만을 나타냅니다. 그게 더 명확한 지 모르겠다. –

답변

0

귀하의 이미지의 유형은 GIF입니다. GIF의 색상이 RGB가 아닌 팔레트 기반이기 때문에 작업이 더 어려워집니다. OpenCV는 현재 GIF를 지원하지 않습니다. 가장 좋은 옵션은 Pillow 일 것입니다.

따라서이 SO's post에 따르면 팔레트를 찾아서 팔레트를 RGB로 변환하고 어떤 색이 어떤 픽셀인지 알아야합니다 (colorpix과 같은 일부 도구를 사용하여 쉽게 수행 할 수 있음).

다음으로 팔레트에서 해당 색상을 변경하고이 새 팔레트를 다시 이미지에 씁니다.

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 내에서 직접 검색 할 수있는 다른 문제입니다. 게으르지 말고, 코드를 작성하고, 문제를 해결하기위한 노력을 보여 주도록 요청하십시오. 그렇지 않으면 투표를하지 않고 보통 답을 얻을 수 있습니다.

관련 문제