Bases de l'utilisation d'OpenCV



Mis à jour le July 7, 2022, 5:29 p.m.

Salut à tous, dans cette serie sur les bases de la computer vision avec OpenCV, nous allons commencer par une vidéo avec toutes les bases:

1- Installation d'OpenCV
2- Lire une image et l'afficher
3- Sauvegarder une image
4- Apprendre à redimensionner l'image
5- Ecrire sur l'image
6- Lancer le mode caméra

 

Installation d'OpenCV

Sous Ubuntu:

pip install opencv-python

 

Sous windows, suivez ces instructions: Installation d'OpenCV sur Windows10

Vérifiez votre installation en tapant python dans votre terminal puis

import cv2
cv2.__version__

Resultats:

 

Vous deviez avoir la dernière version, à savoir la version 4. Assurez vous d'utiliser python 3.6 et supérieure.
Pour connaitre votre version de python, taprez la ligne suivante dans votre terminal:

python --version

 

Comment lire une image?

import cv2
# cv2.imread(path, flag)

# on lit notre image et on la stocke dans une variable
image = cv2.imread('coco.jpg', "photo_coco")

# pour afficher l'image on écrit:
cv2.imshow('image exemple', image)

Et voilà ;). Mais cela ne suffit pas il faut rajouter les deux lignes suivantes pour que l'image ne disparaisse pas instantanément. Ainsi elle attendra qu'on lui dise de se fermer pour le faire.

cv2.waitKey(0)
cv2.destroyAllWindows()

 

On cherche à sauvegarder une image quand on a fait des modifications dessus.

# pour sauvegarder l'image, il suffit de mettre la ligne suivante:
cv2.imwrite("manouvelleimage.jpg", image)

 

 

Comment écrire sur une image?

 

Ouvrez un nouveau script, nommez le comme bon vous semble et mettez le code suivant pour tracer une ligne:

import cv2 

# on lit l'image et on la redimensionne
im = cv2.imread("faces_to_detect.jpg")
img = cv2.resize(im, (960, 540))
print('image lue')

# on enregistre une couleur dans un tuple 
rouge = (255,0,0)

# le premier argument de "cv2.line" est l'image, ensuite le (0,0) correspond aux
# coordonnées x et y de départ, et (500,500) aux coordonnées x,y de fin
# 0,0 se situe tout en haut à gauche de l'image

image = cv2.rectangle(img, (300, 150), (500, 400), rouge, thickness=2)

# on met le nom de la nouvelle image ici dessin.jpg
cv2.imwrite("dessin_rectangle.jpg", image)
print('image sauvegardée')
print('fin du script')

 

 

Ouvrez un nouveau script, nommez le comme bon vous semble et mettez le code suivant pour tracer un rectangle cette fois:

import cv2 

# on lit l'image et on la redimensionne
im = cv2.imread("faces_to_detect.jpg")
img = cv2.resize(im, (960, 540))
print('image lue')

# on enregistre une couleur dans un tuple 
black = (0,0,0)

# le premier argument de "cv2.line" est l'image, ensuite le (0,0) correspond aux
# coordonnées x et y de départ, et (500,500) aux coordonnées x,y de fin
# 0,0 se situe tout en haut à gauche de l'image

image = cv2.line(img, (0, 0), (500, 500), black)

# on met le nom de la nouvelle image ici dessin.jpg
cv2.imwrite("dessin.jpg", image)
print('image sauvegardée')
print('fin du script')

 

 

 

Voilà, vous savez lire une image avec OpenCV, la redimensionner, faire des figures géométriques dessus, et l'enregistrer.

 

 

Utilisation de la caméra avec OpenCV

Une autre base à connaitre est l'utilisation de la caméra avec OpenCV, vous pouvez le faire avec le script ci-dessous

import cv2
webcam = cv2.VideoCapture(0)
# on créé une boucle
while(True):
    #on recupere frame par frame
    ret, frame = webcam.read()
    # on affiche le frame
    cv2.imshow('frame', frame)
    #on dit au logiciel d'attendre que la touche "q" soit pressée pour arrêter >
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
webcam.release()
cv2.destroyAllWindows()

 

Mais vous pouvez aussi vous amusez à mettre du texte sur la video en utilisant la fonction cv2.putText():

import cv2
webcam = cv2.VideoCapture(0)


# Voici les arguments pour notre fonction d'écriture cv2.putText()
# style d'écriture
font_decriture = cv2.FONT_HERSHEY_SIMPLEX #nouvelle ligne

# position de ce qui est écrit sur la video
position = (50, 50) #nouvelle ligne

# taille de l'écriture
taille = 1 #nouvelle ligne

# couleur bleue
bleu = (255, 0, 0) #nouvelle ligne

# epaisseur de l'écriture, changer la valeur pour tester
thickness = 4 #nouvelle ligne


# on créé une boucle
while(True):
    #on recupere frame par frame
    ret, frame = webcam.read()
    # on écrit sur le frame
    frame_ecrit = cv2.putText(frame, "J'utilise OpenCV pour cette camera", position, font_decriture, 
        taille, bleu, thickness, cv2.LINE_AA)
    # on affiche le frame
    cv2.imshow('frame', frame_ecrit)
    #on dit au logiciel d'attendre que la touche "q" soit pressée pour arrêter >
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
webcam.release()
cv2.destroyAllWindows()