11

フルーク ロボットから画像を取得し、画像内の各ピクセルの色を決定するとします。次に、ピクセルの大部分が赤の場合は、完全に緑に変更します。ピクセルの大部分が緑の場合は、完全に青に変更します。ピクセルの大部分が青の場合は、完全に赤に変更します。これは私ができることですが、変更する必要があるイメージを取得するために機能させることはできません. 構文エラーはありません。私が問題を抱えているのは単なるセマンティックです。私はパイソンを使用しています。

私の試みたコード:

import getpixel
getpixel.enable(im)  
r, g, b = im.getpixel(0,0)  
print 'Red: %s, Green:%s, Blue:%s' % (r,g,b)

また、次のように画像を保存しています。

pic1 = makePicture("pic1.jpg"):
    for pixel in getpixel("pic1.jpg"):
        if pixel Red: %s:
           return Green:%s
        if pixel Green:%s: 
           return Blue:%s
4

6 に答える 6

18

Imageモジュールを使用しようとしていると思います。次に例を示します。

from PIL import Image
picture = Image.open("/path/to/my/picture.jpg")
r,g,b = picture.getpixel( (0,0) )
print("Red: {0}, Green: {1}, Blue: {2}".format(r,g,b))

この画像でこれを実行すると、次の出力が得られます。

>>> from PIL import Image
>>> picture = Image.open("/home/gizmo/Downloads/image_launch_a5.jpg")
>>> r,g,b = picture.getpixel( (0,0) )
>>> print("Red: {0}, Green: {1}, Blue: {2}".format(r,g,b))
Red: 138, Green: 161, Blue: 175

編集:あなたが望むことをするために、私はこのようなことを試みます

from PIL import Image
picture = Image.open("/path/to/my/picture.jpg")

# Get the size of the image
width, height = picture.size()

# Process every pixel
for x in width:
   for y in height:
       current_color = picture.getpixel( (x,y) )
       ####################################################################
       # Do your logic here and create a new (R,G,B) tuple called new_color
       ####################################################################
       picture.putpixel( (x,y), new_color)
于 2012-10-31T21:02:57.547 に答える
1

ギズモの回答にいくつかのコメントを追加します。これ:

px = im.load()
current_color = (px[i, j])

おそらくこれよりも高速です:

picture.getpixel( (x,y) )

また、必ずこれを使用してください:

 picture.putdata(colors)

ループ内のこれの代わりに:

picture.putpixel( (x,y), new_color)
于 2016-01-28T02:48:00.837 に答える