Accès à la structure d'une image dans Python
Méthode : Lecture d'une image dans python
Nous allons lire cette image[1] :
Sauvegarder cette image sur votre ordinateur et noter la localisation du fichier sur le disque (par exemple c:/temp/OCV_Haribo.png
")
Pour Lire l'image, la commande est :
import numpy as np
import cv2 as cv
# Load an color image in grayscale
img = cv.imread('c:/temp/ocv_haribo.png',cv.IMREAD_UNCHANGED)
cv.imshow("Image",img)
cv.waitKey(50);
Une autre solution est d'écrire les ligne précédentes dans un fichier, par exemple dans LectureImage.py, et d'exécuter ce fichier à partir de python
exec(open('c:\\temp\\LectureImage.py').read())
Enfin une dernière possibilité, sans lancer python, est de cliquer à partir de Windows sur le fichier LectureImage.py
. Il faut que l'extension pu soit associée à python.
Attention : cv.waitKey
la fonction cv.waitKey est indispensable pour afficher une image après cv.imshow.
Si cv.waitKey(0) est ajouté alors il faut appuyer sur une touche du clavier pour continuer le programme.
Méthode : Affichage de la structure dans python
Complétons le code précédent :
import numpy as np
import cv2 as cv
# Load an color image in grayscale
img = cv.imread('c:/temp/ocv_haribo.png',cv.IMREAD_UNCHANGED)
print( img.shape )
cv.imshow("Image",img)
cv.waitKey(0);
La dimension de l'image est de 418 lignes par 507 colonnes et 4 plans (bleu, vert, rouge et canal alpha) |
Méthode : Structure d'une image et accès aux données dans scilab
Une image couleur a une taille.
img.shape
L'origine de l'image est en haut à gauche.
Une image couleur est composée de trois plans, rouge, vert, bleu et dans le cas précédent d'un canal alpha. Pour afficher la couleur du pixel en ligne 17 et colonne 369 dans la console, la commande est
img[70,337]
le résultat est array([ 14, 11, 120, 255], dtype=uint8)
Comme vous pouvez le constater ce pixel est rouge (valeur =B,V,R et alpha).
Méthode : Tracé d'une coupe d'une image
Pour tracer une coupe (la ligne 20) de l'image précédente, il faut entrer les lignes suivantes :
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
# Load an color image in grayscale
img = cv.imread('c:/temp/ocv_haribo.png',cv.IMREAD_UNCHANGED)
print( img.shape )
cv.imshow("Image",img)
cv.waitKey(0);
cv.destroyAllWindows()
xs=np.linspace(0,img.shape[1]-1,img.shape[1])
yr=img[20,0:img.shape[1]:1,2]
yg=img[20,0:img.shape[1]:1,1]
yb=img[20,0:img.shape[1]:1,0]
plt.plot(xs,yr,color='r')
plt.plot(xs,yg,color='g')
plt.plot(xs,yb,color='b')
plt.show()
le résultat est le suivant. De quel couleur est le bonbon sur la ligne 20 ? |