opencv

Vision par ordinateur Les bases

Vision par ordinateur Les bases
Opencv (Open Source Computer Vision Library) est un module Python utilisé pour la vision par ordinateur. OpenCV est un module gratuit et open source qui contient des centaines d'algorithmes pour effectuer diverses tâches. Tout, de la reconnaissance faciale à la détection de mouvement, peut être fait avec OpenCV. Cependant, dans ce guide, nous examinerons les bases d'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. La lecture d'un fichier image, la saisie du chemin complet du fichier ou du nom du fichier (si le fichier se trouve dans le dossier python) et l'ajout d'un indicateur se font à l'aide de cv2.imread(). Le drapeau peut prendre la valeur 1 (pour une image couleur), 0 (pour les niveaux de gris) ou -1 (pour une image couleur avec canaux). On peut utiliser le cv2.fonction imshow() pour afficher l'image ; ici, deux arguments sont passés - un nom pour l'image et l'image à afficher. Ensuite, nous utilisons le cv2.waitKey() fonction pour attendre une entrée au clavier ; un 0 pour le cv2.La fonction waitKey(0) implique un temps d'attente permanent. En revanche, le cv2.La fonction destroyAllWindows() fermera les fenêtres.

Cela va lire et ouvrir une image, et garder l'image ouverte jusqu'à ce que vous la fermiez :

importer cv2
image = cv2.imread('LinuxLogo.jpg', 1)
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.détruireToutesFenêtres()

É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)

Capturer une vidéo à partir de la webcam

Pour capturer des vidéos, on commence par initialiser le cv2.Fonction VideoCapture(). Nous utilisons ensuite une boucle « while » pour continuer à capturer la vidéo. Alors que l'utilisateur n'appuie pas sur la touche de sortie, nous pouvons lire les cadres et les afficher en utilisant read() et cv2.fonction imshow(). On met alors une touche « break » pour sortir de la boucle ; dans ce cas, le nombre 27 est la touche ESC. Si l'utilisateur appuie sur la touche ESC, il sort de la boucle. Une fois sorti de la boucle, il faut relâcher la capture.

importer numpy en tant que np
importer cv2
capture = cv2.Capture vidéo(0)
tandis que (Vrai):
ret, cadre = capture.lis()
cv2.imshow('cadre', cadre)
si cv2.waitKey(1) & 0xFF == 27 :
Pause
Capturer.Libération()
cv2.détruireToutesFenêtres()

Lecture d'un fichier vidéo

Lire 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 alors ajouté à la fonction. La boucle « while » est réutilisée, et la touche de sortie, dans ce cas, est la touche « s » du clavier. Cela ouvrira et jouera le fichier vidéo et le fermera lorsque l'utilisateur appuie sur la touche "s".

importer numpy en tant que np
importer cv2
capture = cv2.VideoCapture("Megamind.avi")
tandis que (Vrai):
ret, cadre = capture.lis()
cv2.imshow('cadre', cadre)
si cv2.waitKey(1) & 0xFF == ord("s") :
Pause
Capturer.Libération()
cv2.détruireToutesFenêtres()

Enregistrement d'un fichier vidéo

L'enregistrement d'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 d'images par seconde et la taille d'image. De plus, il faut spécifier le code FourCC, qui est le codec vidéo utilisant le cv2.Fonction VideoWriter_fourcc(). Utilisation de 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 clé de sortie. Dans ce cas, si l'utilisateur appuie sur la touche « s », il sortira de la boucle puis relâchera la capture et la sortie et fermera les fenêtres.

importer numpy en tant que np
importer cv2
capture = cv2.Capture vidéo(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
sortie = cv2.VideoWriter('sortie.avi', fourcc, 30.0, (640 480))
tandis que (capturer.est ouvert()):
ret, cadre = capture.lis()
production.écrire (cadre)
cv2.imshow('cadre',cadre)
si cv2.waitKey(1) & 0xFF == ord('s'):
Pause
Capturer.Libération()
production.Libération()
cv2.détruireToutesFenêtres()

Dessiner des lignes, des cercles, des rectangles et des textes

La première chose que nous apprendrons à dessiner est une ligne. Pour tracer une ligne, on utilise simplement le cv2.fonction ligne(). 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 tracer une bordure rectangulaire (constituée de 4 lignes) :

importer cv2
capture = cv2.Capture vidéo('vtest.avi')
tant que vrai :
ret, cadre = capture.lis()
largeur = int (capture.obtenir(3))
hauteur = int(capture.obtenir(4))
ligne1 = cv2.ligne(cadre, (0,0), (0,hauteur), (255, 255, 255),10)
ligne2 = cv2.ligne(ligne1, (0, 0), (largeur, 0), (255, 255, 255), 10)
ligne3 = cv2.ligne(ligne2, (0,hauteur), (largeur, hauteur), (255, 255, 255), 10)
ligne4 = cv2.ligne(ligne3, (largeur, 0), (largeur, hauteur), (255, 255, 255), 10)
cv2.imshow('cadre', ligne4)
si cv2.waitKey (40) == ord('q'):
Pause
Capturer.Libération()
cv2.détruireToutesFenêtres()

Ensuite, nous allons dessiner à la fois un cercle et un rectangle sur la vidéo. Pour dessiner un rectangle, on utilise le cv2.fonction rectangle(), qui prend 5 arguments un peu comme la ligne. Pour tracer un cercle, on utilise 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.Capture vidéo('vtest.avi')
tant que vrai :
ret, cadre = capture.lis()
largeur = int (capture.obtenir(3))
hauteur = int (capture.obtenir(4))
rectangle = cv2.rectangle(cadre, (150, 15), (650, 550), (0,0,0), 11)
cv2.cercle(rectangle, (250, 250), 60, (0,0,0), 11)
cv2.imshow('cadre', cadre)
si cv2.waitKey (40) == ord('q'):
Pause
Capturer.Libération()
cv2.détruireToutesFenêtres()

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, on peut 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 cv2.LINE_AA (ce qui rend tout plus beau).

importer cv2
capture = cv2.Capture vidéo('vtest.avi')
tant que vrai :
ret, cadre = capture.lis()
largeur = int(capture.obtenir(3))
hauteur = int (capture.obtenir(4))
police = cv2.FONT_HERSHEY_SIMPLEX
image = cv2.putText(frame, "VTEST.AVI", (200, 200), police, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow('cadre', image)
si cv2.waitKey (40) == ord('q'):
Pause
Capturer.Libération()
cv2.détruireToutesFenêtres()

OpenCV est capable de beaucoup de grandes choses où il faut commencer quelque part. Il pourrait s'agir 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.

Bon codage!

Contrôlez et gérez le mouvement de la souris entre plusieurs moniteurs dans Windows 10
Gestionnaire de souris à double affichage vous permet de contrôler et de configurer le mouvement de la souris entre plusieurs moniteurs, en ralentissa...
WinMouse vous permet de personnaliser et d'améliorer le mouvement du pointeur de la souris sur un PC Windows
Si vous souhaitez améliorer les fonctions par défaut de votre pointeur de souris, utilisez un logiciel gratuit WinMouse. Il ajoute plus de fonctionnal...
Le bouton de clic gauche de la souris ne fonctionne pas sous Windows 10
Si vous utilisez une souris dédiée avec votre ordinateur portable ou de bureau mais que le le clic gauche de la souris ne fonctionne pas sur Windows 1...