Comment utiliser Python pour suivre des formes sur des images
Introduction :
Le traitement d'image est une partie importante du domaine de la vision par ordinateur, et le suivi de formes spécifiques dans les images est l'une des tâches courantes. Cet article explique comment utiliser Python et la bibliothèque OpenCV pour suivre des formes dans des images et fournit des exemples de code correspondants.
1. Préparation :
Avant de commencer à écrire du code, nous devons installer les bibliothèques Python et OpenCV et préparer une image contenant la forme cible en entrée. Tout d’abord, assurez-vous que Python est installé. Vous pouvez télécharger et installer la version adaptée à votre système d’exploitation à partir du site Web officiel de Python. Ensuite, nous devons installer la bibliothèque OpenCV à l'aide de la commande pip. Ouvrez un terminal (ou une ligne de commande) et entrez la commande suivante pour installer OpenCV :
pip install opencv-python
2. Importez des bibliothèques et lisez des images :
Avant d'écrire formellement du code, nous devons d'abord importer la bibliothèque correspondante. Python fournit l'instruction import pour importer les bibliothèques que vous devez utiliser. Dans cette tâche, nous devons importer la bibliothèque cv2 (qui est l'interface Python de la bibliothèque OpenCV). De plus, nous devons également importer la bibliothèque numpy pour prendre en charge les opérations sur les tableaux. Voici le code pour importer les bibliothèques requises :
import cv2
import numpy as np
Ensuite, nous devons lire l'image et la convertir en image en niveaux de gris. Les images en niveaux de gris sont plus faciles à traiter et peuvent réduire la quantité de calculs. Étant donné que des travaux futurs pourraient modifier l'image originale, nous pouvons utiliser une copie pour enregistrer l'image en niveaux de gris. Voici le code pour lire l'image et la convertir en image en niveaux de gris :
image = cv2.imread("input.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
3. suivi :
Avant d'effectuer le suivi de forme, nous devons d'abord effectuer une détection de forme. OpenCV fournit une fonction cv2.findContours() pour rechercher des contours dans les images. Cette fonction accepte une image binarisée en entrée et renvoie une liste de tous les contours de l'image. Voici un exemple de code pour la détection de forme :
ret, thresh = cv2.threshold(gray, 127, 255, 0)
contours, hierarchie = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
Next , nous pouvons utiliser la fonction cv2.approxPolyDP() pour approximer le contour et le rendre plus lisse. Le degré d'approximation peut être modifié en ajustant la valeur de epsilon, le deuxième paramètre de cette fonction. Les petites valeurs epsilon produiront des approximations plus précises, tandis que les grandes valeurs epsilon produiront des approximations plus grossières. Voici un exemple de code pour l'approximation de forme :
epsilon = 0.04 * cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, epsilon, True)
Enfin, nous pouvons utiliser la fonction cv2.drawContours() pour dessiner les formes détectées sur l'image originale. Voici un exemple de code pour dessiner des contours :
cv2.drawContours(image, [approx], 0, (0, 255, 0), 2)
Explication du code :
Dans le code ci-dessus, ret est une valeur booléenne for Indique si l’opération de seuillage a réussi. le seuil est une image seuillée utilisée pour la détection de contour. contours est une liste contenant tous les contours détectés. la hiérarchie est l'information hiérarchique du plan. epsilon est un paramètre utilisé pour approximer le contour. approx est le contour approximatif. Enfin, la fonction cv2.drawContours() permet de dessiner des contours.
4. Affichage et résultats :
Après avoir terminé le traçage de la forme, nous pouvons afficher l'image du résultat et l'enregistrer dans un nouveau fichier. Voici un exemple de code pour afficher et enregistrer les résultats :
cv2.imshow("Result", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite("output.jpg", image )
Explication du code :
Dans le code ci-dessus, la fonction cv2.imshow() est utilisée pour afficher l'image résultat. cv2.waitKey(0) est utilisé pour attendre que l'utilisateur appuie sur n'importe quelle touche avant de fermer la fenêtre d'image. La fonction cv2.destroyAllWindows() est utilisée pour fermer toutes les fenêtres ouvertes. Enfin, la fonction cv2.imwrite() est utilisée pour enregistrer l'image résultante.
Résumé :
Cet article explique comment utiliser Python et la bibliothèque OpenCV pour suivre les formes dans les images. Nous avons d'abord pris connaissance de la préparation, puis importé les bibliothèques requises et lu les images. Ensuite, nous avons effectué une détection et un suivi de forme pour suivre la forme cible en rapprochant les contours et en dessinant les contours. Enfin, nous montrons l'image résultante et enregistrons les résultats du suivi.
Voici l'exemple de code complet :
import cv2 import numpy as np image = cv2.imread("input.jpg") gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(gray, 127, 255, 0) contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for contour in contours: epsilon = 0.04 * cv2.arcLength(contour, True) approx = cv2.approxPolyDP(contour, epsilon, True) cv2.drawContours(image, [approx], 0, (0, 255, 0), 2) cv2.imshow("Result", image) cv2.waitKey(0) cv2.destroyAllWindows() cv2.imwrite("output.jpg", image)
J'espère que cet article pourra aider les lecteurs à comprendre comment utiliser Python et la bibliothèque OpenCV pour suivre les formes dans les images. En apprenant et en appliquant les exemples de code fournis dans cet article, les lecteurs peuvent facilement effectuer des tâches de suivi de forme et jouer un rôle dans les applications de traitement d'image.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!