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
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
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)
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.
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()