ouvrir et afficher une image ou le flux d’une camera USB , c’est le thème de ce tuto.
voyons pour commencer comment ouvrir une image enregistrée dans un fichier dans le même répertoire que le pgme python:
import cv2
# affichage greyscale mode
img0 = cv2.imread('flower.png', 0)
# affichage colormode
img1 = cv2.imread('flower.png', 1)
while True:
cv2.imshow('image 0', img0)
cv2.imshow('image 1', img1)
if cv2.waitKey(1) == 27:
break
cv2.destroyAllWindows()
cela donne le resultat suivant ou nous voyons l’iamge en deux versions, echelle de gris et couleur .
voyons maintenant comment afficher le flux video d’une camera USB avec les memes principes:
explications du programme
import cv2
# connection a la camera
cap = cv2.VideoCapture(0)
while (True):
# lecture d'une image (frame) du flux video
ret, frame = cap.read()
# affichage de l'image (frame) dans une fenetre nommée "Video"
cv2.imshow('Video', frame)
# test appui clavier et si touche ESC arret boucle while
if cv2.waitKey(1) == 27:
break
# arret flux camera
cap.release
# fermeture des toutes les fenetres d'affichage
cv2.destroyAllWindows()
en resultat , le flux des images s’affiche dans une fenêtre comme ci dessous:
améliorons le programme en ajoutant l’enregistrement du flux vidéo dans un fichier :
import cv2
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
videowriter = cv2.VideoWriter("capture.avi", fourcc, 25, (640, 480));
while (True):
ret, frame = cap.read()
videowriter.write(frame)
cv2.imshow('Video', frame)
if cv2.waitKey(1) == 27:
break
cap.release()
videowriter.release()
cv2.destroyAllWindows()
derniere amelio, l’enregistrement du flux video image par image :
import cv2
cap = cv2.VideoCapture(0)
i=1
while (True):
ret, frame = cap.read()
cv2.imwrite('captureImg'+str(i)+'.jpg', frame)
cv2.imshow('Video', frame)
i+=1
if cv2.waitKey(1) == 27:
break
cap.release()
cv2.destroyAllWindows()
a partir des ces quelques bases il est ensuite possible d’imaginer des développements, par exemple des boutons dans une fenetre Tkinter permettant de déclencher la prise d’une photo ou l’enregistrement vidéo a la demande et non pas en permanence .