Comment charger, afficher et enregistrer une image

Une des premières questions que l’on peut se poser lorsque l’on débute avec OpenCV est comment fait-on pour charger une image.

La question qui vient par la suite est comment l’afficher.

Même si afficher une image n’est pas forcément utile, il peut s’avérer un moyen simple de trouver ce qui ne va pas dans votre programme. Il est donc intéressant d’y accorder le sujet d’un article 🙂

Et comme nous sommes si bien partis, autant continuer et apprendre à enregistrer une image.

Comment charger, afficher et enregistrer une image:

L’objectif de cet article est d’apprendre à charger une image, l’afficher et attendre qu’une touche soit pressée avant de fermer l’affichage et terminer le scripte.

Nous allons donc utiliser principalement trois fonctions:

  • cv2.imread(path) : permettant de charger une image ayant pour chemin: path.
  • cv2.imshow(‘Nom’, img): permettant d’afficher l’image (img) dans la fenêtre ‘Nom’
  • cv2.imwrite(path, img): permettant d’enregistrer l’image (img) dans un répertoire dédié

Passons au code:

import cv2
import argparse

arg = argparse.ArgumentParser() 
arg.add_argument("-i", "--img", dest="imgfile", default=False, help ="le fichier image à lire")
arg.add_argument("-d", "--dest", dest="imgdest", help ="le fichier image à sauvegarder")
args = arg.parse_args()

imgfile = args.imgfile
imgdest = args.imgdest
img=cv2.imread(imgfile)
if (imgdest): 
    cv2.imwrite(imgdest,img) 
cv2.imshow('image',img) 
cv2.waitKey(0)

Les lignes 1 et 2 permettent d’importer les paquets que nous allons utiliser: cv2 pour la partie OpenCV et argparse qui permet d’analyser les arguments en entrée de notre programme.

Les lignes 4 à 9 vont nous permettre de récupérer les arguments de notre programme, à savoir imgfile notre fichier image d’origine et  imgdest le fichier image à sauvegarder.

Le chargement de l’image se fait à la ligne 11.  cv2.imread prend en entrée le chemin de notre image et stock cette image dans la variable img qui est de type numpy.ndarray .

Du fait que nous ne modifions pas l’image, vous n’avez pas forcément envie d’en enregistrer une nouvelle version. C’est pourquoi la ligne 12 nous permet de ne pas enregistrer l’image si on ne fournit de chemin de destination.

Dans le cas où vous souhaitez enregistrer l’image, la ligne 13 va vous intéresser: cv2.imwrite prend en entrée le chemin de destination: imgdest, et l’image que l’on veut enregistrer: img.

Passons maintenant à l’affichage:

La ligne 16 nous permet d’afficher l’image: le premier argument est le nom de la fenêtre où sera afficher l’image. Le second est l’image que nous voulons afficher dans cette fenêtre. La ligne suivante est particulièrement importante. En effet, sans cette ligne, votre programme va afficher votre image et la refermer immédiatement . Pas très pratique…

Cv2.waitKey permet de mettre en pause notre programme, jusqu’à ce que l’on presse une touche. Le seul argument que cv2.waitKey prend est un entier positif correspondant au délais en millisecondes avant que la fenêtre ne se ferme automatiquement. Si l’on spécifie « 0 », la fonction attendra infiniment qu’une touche soit pressée.

Nous pouvons maintenant lancer notre programme avec la commande suivante: python3 image.py -i charger_image.jpg -d image_enregistre.jpg

Voilà vous avez affiché votre image et en avez enregistré une copie !

Et ensuite ?

Je vous invite à découvrir les fonctions de bases pour la manipulation des vidéos (ici)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Retour en haut