bash

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

Rédigé par BeHuman - - 1 commentaire

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 blush 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 cheeky

++

Manipulation de chaîne de caractères en bash

Rédigé par BeHuman - - aucun commentaire

Il m'arrive souvent de devoir extraire une sous chaine d'une chaine de cractères. Pour cela il existe une panoplie d'outils permettant de le faire en ligne de commande. Cependant j'aime me créer mes propres scripts suivant ma logique quotidienne cheeky.

 

 

Aide:

~$ str
STR version 0.1 by BeHuman
GNU/GPL v3
Usage:
    str [OPTION] [PARAMS]
 
Options:
    -h          Help
 
    -l          At left
    -pl         At primary left
 
    -r          At right
    -pr         At primary right
 
    -b          Between two strings
 
    -R          String replace
 
    -len        Length
    -ler        Length Ereg
 
    -p          At position
 
Examples:
    str -l "hello world" "o*"
        return "hello w"
    str -pl "hello world" "o*"
        return "hell"
 
    str -r "hello world" "*o"
        return "rld"
    str -pr "hello world" "*o"
        return " world"
 
    str -b "hello world" "*e" "o*"
        return "llo w"
 
    str -R "hello world" "ell" "a"
        return "hao world"
 
    str -len "hello world"
        return 11
    str -ler "hello world" 'h[a-z]*.w'
        return 7
 
    str -p "hello world" "or"
        return 7
 

 

Lire la suite de Manipulation de chaîne de caractères en bash