Récupérer les pixels d'une image en python et comparer deux images.

Rédigé par BeHuman 3 commentaires
Classé dans : Python Mots clés : couleur, image, comparaison, compare, diff, PIL, color, pixel, python, bash, shell

J'ai eu besoin de faire un petit script me permettant de comparer deux images. Pour se faire j'ai décidé de récupérer tout les pixels d'une image pour ensuite les traiter à ma guise (p'tain de pub).
En trainant sur la toile, je suis tombé sur un magnifique blog où j'ai trouvé mon bonheur

ici même

Script python "imgcolor.py" utilisant PIL, sys, os:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys, os
from PIL import Image

if not os.path.isfile(sys.argv[1]):
    print "ERREUR: '"+sys.argv[1]+"' n'est pas un fichier."
    exit(1)
im = Image.open(sys.argv[1], 'r')
pix_val = list(im.getdata())
pix_val_flat = [x for sets in pix_val for x in sets]
for element in pix_val_flat:
    print element
exit(0)

vous pourrez ensuite par exemple, comparer deux images via une ligne de Shell/Bash

if [[ `./imgcolor.py 001.png` == `./imgcolor.py 002.png` ]]; then echo "ok"; else echo "no"; fi

ou encore

if [[ `./imgcolor.py 001.png` == `./imgcolor.py 002.png` ]]; then
    echo "ok"
else
    echo "no"
fi

ou bien

./imgcolor.py 001.png | while read color; do
    #Traitement perso par pixel
done

vous l'aurez compris, les possibilitées sont multiple 

++

3 commentaires

#1  - Juman Cherifi a dit :

;-):cool::lol:;-):-|:-);-):-/

Répondre
#2  - débutante en Python! a dit :

heyheyhey
j'aimerais des images en python, donc j'ai presque comme toi mais avec get.pixel donc je présume que c'est similaire.
ma question c'est comment on fait pour lire ce qu'on a trouvé comme résultat? (les valeurs des pixels trouvés ? pour ensuite les comparer les unes au autres pour faire des seuils de pourcentage et tout... )
MERCIIIIII :-D

Répondre
#3  - BeHuman a dit :

Salut !
la sortie "print element" du script ci-dessus te retourne tout les pixels les un après les autres, grâce à la boucle "for element in pix_val_flat". Tu as simplement à comparer la variable "element" ;-) ++

Répondre

Écrire un commentaire

Quelle est la deuxième lettre du mot iv372 ?

Fil RSS des commentaires de cet article