2016-04-07 17 views
2

pythonでイメージのピクセルカラーを変更する必要があります。ピクセル値(255、0、0)を除いて、すべてのピクセルカラー値を黒(0、0、0)に変更する必要があります。私は次のコードを試しましたが、それは助けにはなりません。PILのピクセルカラー値を変更する

from PIL import Image 
im = Image.open('A:\ex1.jpg') 
for pixel in im.getdata(): 
    if pixel == (255,0,0): 
     print "Red coloured pixel" 
    else: 
     pixel = [0, 0, 0] 
+0

文字列リテラルでバックスラッシュを使用してください。生の文字列 'r'A:\ ex1.jpg 'を使うか、それらをエスケープする:' 'A:\\ ex1.jpg' '。または、単にパス名にスラッシュを使用してください: '' A:/ ex1.jpg '' –

答えて

3

このwikibookを参照してください:あなたの問題を合わせてそのコードを変更するhttps://en.wikibooks.org/wiki/Python_Imaging_Library/Editing_Pixels

:ここ

pixels = img.load() # create the pixel map 

for i in range(img.size[0]): # for every pixel: 
    for j in range(img.size[1]): 
     if pixels[i,j] == (255, 0, 0): 
      pixels[i,j] = (0, 0 ,0) 
+1

OPは逆の必要はありませんか? (非赤色のピクセルを黒色に変更します)? – jsbueno

0

は、私はあなたがやりたいPILを使用したい方法です:

from PIL import Image 

imagePath = 'A:\ex1.jpg' 
newImagePath = 'A:\ex2.jpg' 
im = Image.open(imagePath) 

def redOrBlack (im): 
    newimdata = [] 
    redcolor = (255,0,0) 
    blackcolor = (0,0,0) 
    for color in im.getdata(): 
     if color == redcolor: 
      newimdata.append(redcolor) 
     else: 
      newimdata.append(blackcolor) 
    newim = Image.new(im.mode,im.size) 
    newim.putdata(newimdata) 
    return newim 

redOrBlack(im).save(newImagePath) 
+0

バグ行 'newim.putdata(newimdata)'を編集しました。変数名が正しくありませんでした。コードは今すぐうまくいきます。 – loxaxs

関連する問題