2017-01-19 6 views
0

Ich möchte ein Programm schreiben, das 2 Bilder vergleicht (o kleines und ein größeres), um zu prüfen, ob das kleine innerhalb des großen ist. Python 3.5 - Pillow - Pixel Acces

Wissen, dass ein Bild auf einen Array verglichen werden, habe ich den folgenden Algorithmus geschrieben:

big_image = [ 
    [1,2,3,4,5,6,7,8,9], 
    [10,11] 
] 

small_image = [ 
    [1,2], 
    [10,11] 
] 
big_result = [] 
def check(small_image, big_image): 
    for i in range(len(small_image)): 
     for j in range(len(small_image[i])): 
      if small_image[i][j] == big_image[i][j]: 
       result = (i,j) 
       big_result.append(result) 
    return(big_result) 

print(check(small_image, big_image)) 

Es ausgedruckt: [(0, 0), (0, 1), (1, 0), (1, 1)], wie beabsichtigt.

Danach habe ich das Kissen-Modul installiert, um den Algorithmus auf 2 tatsächlichen Bildern (.bmp-Format) zu testen.

Meine Frage ist, wie ich auf die Pixel im Bild zugreifen kann und wie bekomme ich die image.width und die image.height, damit ich meinen Algorithmus testen kann.

Ich habe das offizielle Kissen Tutorial (http://pillow.readthedocs.io/en/3.1.x/handbook/tutorial.html) überprüft, aber alles, was ich finden konnte ist, wie man umdrehen und Bild, ernte es und so.

Antwort

0

Sie können width, height = im.size verwenden, um die Breite und Höhe wie das folgende Beispiel herausfinden:

from PIL import Image 
im = Image.open("lena.bmp") 
width, height = im.size 
print(width, height) 

Sie weiteres Beispiel finden können nach this

1

Für die Bildabmessungen können Sie tun:

import PIL 
from PIL import Image 

img = Image.open('Imagename.jpg').convert('RGB') 
width, height = img.size 

Um auf Pixel zuzugreifen, hat PIL .load(), so:

pixels = img.load() 
for x in range(width): 
    for y in range(height): 
     pixels[x, y] = (0, 100, 200) #an rgb value 
img.show()