1

RGB画像のピクセルを反転しようとしています。つまり、各ピクセルの各チャネル(赤、緑、青)の輝度値を255から単に減算します。私がこれまでに以下のいるPythonのRGB画像の反転ピクセル

:私は上記のスクリプトを実行すると

from PIL import Image 

im = Image.open('xyz.png') 
rgb_im = im.convert('RGB') 
width, height = im.size 

output_im = Image.new('RGB', (width,height)) 

for w in range(width): 
    for h in range(height): 
     r,g,b = rgb_im.getpixel((w,h)) 
     output_r = 255 - r 
     output_g = 255 - g 
     output_b = 255 - b 
     output_im[w,h] = (output_r, output_g, output_b) 

、私は次のエラーを取得する:

Traceback (most recent call last): 
    File "image_inverse.py", line 31, in <module> 
    output_im[w,h] = (output_r, output_g, output_b) 
    File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 528, in __getattr__ 
    raise AttributeError(name) 
AttributeError: __setitem__ 

どのように私はこの問題を解決することができますか?

ありがとうございました。

答えて

0

私はあなたが画像をnumpyの配列

from PIL import Image 
im = Image.open('xyz.png') 
im = 255 - im 
+0

あなたの返事をありがとう。手順をより詳細に示す必要があるので、私のコードと一緒に行くソリューションがありますか? – Simplicity

0

ある場合は、各pixel-

from PIL import Image 

im = Image.open('xyz.png') 
rgb_im = im.convert('RGB') 
width, height = im.size 

output_im = Image.new('RGB', (width,height)) 

for w in range(width): 
    for h in range(height): 
     r,g,b = rgb_im.getpixel((w,h)) 
     output_r = 255 - r 
     output_g = 255 - g 
     output_b = 255 - b 
     alpha = 1 
     output_im.putpixel((w, h), (output_r, output_g, output_b, alpha)) 
でR、G、B、値を代入する img.putpixelを使用することができますベクトル化操作を使うことができますね
関連する問題