Vision informatique Les bases

Vision informatique Les bases
OpenCV (Open Source Computer Vision Library) est un module Python utilisé pour la vision de l'ordinateur. OpenCV est un module libre et open-source qui contient des centaines d'algorithmes pour effectuer diverses tâches. Tout, de la reconnaissance du visage à la détection de mouvement, peut être effectué en utilisant OpenCV. Cependant, dans ce guide, nous examinerons les bases de l'OpenCV.

Tout d'abord, installons OpenCV:

PIP3 Installer OpenCV-Python

Lire et afficher des images

La première chose que nous devons apprendre est de lire et d'écrire des images. Lire un fichier image, saisir le chemin complet vers le fichier ou le nom du fichier (si le fichier est dans le dossier Python), et l'ajout d'un indicateur est effectué à l'aide de cv2.imread (). L'indicateur peut prendre la valeur de 1 (pour une image couleur), 0 (pour les niveaux de gris) ou -1 (pour l'image couleur avec les canaux). On peut utiliser le cv2.Fonction imshow () pour montrer l'image; Ici, deux arguments sont passés - un nom pour l'image et l'image à montrer. Ensuite, nous utilisons le CV2.Fonction WaitKey () pour attendre une entrée de clavier; A 0 pour le CV2.La fonction WaitKey (0) implique un temps d'attente permanent. D'un autre côté, le CV2.La fonction de destrielwindows () fermera les fenêtres.

Cela lira et ouvrira une image, et gardera l'image ouverte jusqu'à ce que vous la fermez:

Importer CV2
image = cv2.Imread ('Linuxlogo.jpg ', 1)
cv2.imshow ('image', image)
cv2.WaitKey (0)
cv2.Destroyallwindows ()

Écrire des images

Nous utilisons le CV2.Fonction imwrite () pour enregistrer une image. Cette fonction prend deux paramètres - un nom pour enregistrer l'image et l'image que vous souhaitez enregistrer.

Importer CV2
image = cv2.ImRead ('Identifier.jpg ', -1)
cv2.Imwrite ('Save_image.png ', image)

Capturez la vidéo à partir de webcam

Pour capturer des vidéos, nous commençons par initialiser le CV2.Fonction VideoCapture (). Nous utilisons ensuite une boucle «while» pour continuer à capturer la vidéo. Bien que l'utilisateur n'appuie pas sur la touche de sortie, nous pouvons lire les images et les montrer en utilisant la lecture () et CV2.Fonction Imshow (). Nous avons ensuite mis une clé de «rupture» pour quitter la boucle; Dans ce cas, le numéro 27 est la clé ESC. Si l'utilisateur appuie sur la touche ESC, il éclate de la boucle. Une fois hors de la boucle, il est nécessaire de libérer la capture.

Importer Numpy comme NP
Importer CV2
capture = cv2.Videocapture (0)
tandis que (vrai):
ret, frame = capture.lire()
cv2.imshow ('cadre', cadre)
Si CV2.WaitKey (1) & 0xff == 27:
casser
capture.libérer()
cv2.Destroyallwindows ()

Lire un fichier vidéo

La lecture d'un fichier vidéo, c'est comme capturer une vidéo à partir d'une webcam. Pour ce faire, le CV2.La fonction VideoCapture () est utilisée; Le nom du fichier vidéo que vous souhaitez lire est ensuite ajouté à la fonction. La boucle «while» est à nouveau utilisée, et la clé de sortie, dans ce cas, est la clé «S» du clavier. Cela s'ouvrira et jouera le fichier vidéo et le ferme lorsque l'utilisateur appuyera sur la touche «S».

Importer Numpy comme NP
Importer CV2
capture = cv2.VideoCapture ("Megamind.Avi ")
tandis que (vrai):
ret, frame = capture.lire()
cv2.imshow ('cadre', cadre)
Si CV2.waitKey (1) & 0xff == ord ("s"):
casser
capture.libérer()
cv2.Destroyallwindows ()

Enregistrer un fichier vidéo

Enregistrer un fichier vidéo nécessite un peu plus de travail. Le CV2.La fonction Videowriter () prend 4 paramètres au total - le nom du fichier de sortie, le code Fourcc, le nombre de trames par seconde et la taille du cadre. De plus, il faut spécifier le code FourCC, qui est le codec vidéo à l'aide du CV2.Fonction Videowriter_Fourcc (). En utilisant la capture.isopened (), nous lisons le cadre et écrivons le cadre de sortie. Nous pouvons également montrer les cadres en utilisant le CV2.Fonction Imshow (). Ensuite, nous utilisons CV2.WaitKey (1) & 0xff == ord ('s') pour définir une touche de sortie. Dans ce cas, si l'utilisateur appuie sur la touche «S», il quittera la boucle puis libérera la capture et la sortie et ferme les fenêtres.

Importer Numpy comme NP
Importer CV2
capture = cv2.Videocapture (0)
quatrecc = cv2.Videowriter_fourcc (* 'xvid')
sortie = cv2.VideoWriter ('sortie.Avi ', quatrecc, 30.0, (640 480))
Pendant (capture.est ouvert()):
ret, frame = capture.lire()
sortir.Écrire (cadre)
cv2.imshow ('cadre', cadre)
Si CV2.waitKey (1) & 0xff == ord ('s'):
casser
capture.libérer()
sortir.libérer()
cv2.Destroyallwindows ()

Lignes de dessin, cercles, rectangles et textes

La première chose que nous apprendrons à tracer est une ligne. Pour tracer une ligne, nous utilisons simplement le CV2.Fonction Line (). La fonction prend 5 arguments - la vidéo source, le point de départ, le point de fin, la couleur et l'épaisseur de la ligne. Dans le cas suivant, nous avons décidé de dessiner une bordure rectangulaire (composée de 4 lignes):

Importer CV2
capture = cv2.VideoCapture ('VTest.Avi ')
Bien que vrai:
ret, frame = capture.lire()
largeur = int (capture.obtenir (3))
hauteur = int (capture.obtenir (4))
line1 = cv2.ligne (cadre, (0,0), (0, hauteur), (255, 255, 255), 10)
line2 = cv2.ligne (ligne1, (0, 0), (largeur, 0), (255, 255, 255), 10)
line3 = cv2.Ligne (ligne2, (0, hauteur), (largeur, hauteur), (255, 255, 255), 10)
line4 = cv2.Ligne (ligne3, (largeur, 0), (largeur, hauteur), (255, 255, 255), 10)
cv2.Imshow ('cadre', line4)
Si CV2.waitKey (40) == ord ('q'):
casser
capture.libérer()
cv2.Destroyallwindows ()

Ensuite, nous allons dessiner à la fois un cercle et un rectangle sur la vidéo. Pour dessiner un rectangle, nous utilisons le CV2.fonction rectangle (), qui prend 5 arguments un peu comme la ligne. Pour dessiner un cercle, nous utilisons la fonction cv2.Circle (), qui prend également 5 arguments - la vidéo source, le point central, le rayon, la couleur et l'épaisseur.

Importer CV2
capture = cv2.VideoCapture ('VTest.Avi ')
Bien que vrai:
ret, frame = capture.lire()
largeur = int (capture.obtenir (3))
hauteur = int (capture.obtenir (4))
rectangle = cv2.Rectangle (cadre, (150, 15), (650, 550), (0,0,0), 11)
cv2.Circle (rectangle, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('cadre', cadre)
Si CV2.waitKey (40) == ord ('q'):
casser
capture.libérer()
cv2.Destroyallwindows ()

Maintenant, ajoutons du texte à la vidéo que nous avons. Pour ce faire, nous devons spécifier une police; Ici, nous avons choisi CV2.FONT_HERSHEY_SIMPLEX. Une fois la police sélectionnée, nous pouvons utiliser la fonction cv2.putText () pour faire le reste. Cv2.putText () prend 8 arguments - la vidéo source, le texte que vous souhaitez écrire, la position où vous le souhaitez, la police, le grossissement, la couleur, l'épaisseur et le cv2.Line_aa (ce qui fait que tout semble mieux).

Importer CV2
capture = cv2.VideoCapture ('VTest.Avi ')
Bien que vrai:
ret, frame = capture.lire()
largeur = int (capture.obtenir (3))
hauteur = int (capture.obtenir (4))
FONT = CV2.FONT_HERSHEY_SIMPLEX
image = cv2.putText (cadre, "vtest.Avi ", (200, 200), Font, 4, (0,0,0), 5, Cv2.Line_aa)
cv2.Imshow ('cadre', image)
Si CV2.waitKey (40) == ord ('q'):
casser
capture.libérer()
cv2.Destroyallwindows ()

OpenCV est capable de beaucoup de grandes choses où il faut commencer quelque part. Il pourrait être d'apprendre à créer et à enregistrer des images et des vidéos. Dans ce tutoriel, nous avons appris à faire les bases de la vision par ordinateur.

Codage heureux!