Maison >développement back-end >Tutoriel Python >Comment utiliser Python pour extraire les contours des images
Comment utiliser Python pour effectuer une extraction de contours sur des images
Introduction :
Dans les domaines du traitement d'images et de la vision par ordinateur, l'extraction de contours est une tâche très importante. Il peut séparer l'objet cible dans l'image de l'arrière-plan et extraire les informations sur les bords de forme de l'objet. Cet article explique comment utiliser la bibliothèque OpenCV en Python pour extraire les contours des images.
Installer la bibliothèque OpenCV
Avant de commencer, vous devez vous assurer que la bibliothèque OpenCV a été installée. Vous pouvez l'installer à l'aide de la commande pip :
pip install opencv-python
Importer les bibliothèques nécessaires
Tout d'abord, nous devons importer la bibliothèque OpenCV et la bibliothèque numpy. OpenCV est utilisé pour le traitement d'images et numpy est utilisé pour les opérations sur les tableaux.
import cv2 import numpy as np
Charger des images
Utilisez la fonction imread
d'OpenCV pour charger des images. L'exemple d'image est enregistré localement et le chemin peut être modifié en fonction de la situation réelle. imread
函数加载图片。示例图片保存在本地,可以根据实际情况修改路径。
image = cv2.imread('path/to/image.jpg')
转换为灰度图像
由于轮廓提取通常在灰度图像上进行,因此需要将彩色图像转换为灰度图像。可以使用OpenCV的cvtColor
函数实现。
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
使用阈值进行二值化处理
轮廓提取常常通过对图像进行二值化处理来实现。可以使用OpenCV的threshold
函数将灰度图像转化为二值图像。
_, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
进行轮廓提取
使用OpenCV的findContours
函数对二值图像进行轮廓提取。该函数会返回提取得到的轮廓以及层次结构。
contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
绘制轮廓
可以使用OpenCV的drawContours
函数将提取得到的轮廓绘制在原始图像上。
cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
显示结果
最后使用OpenCV的imshow
函数显示结果。
cv2.imshow('Contours', image) cv2.waitKey(0) cv2.destroyAllWindows()
完整代码示例:
import cv2 import numpy as np # 加载图片 image = cv2.imread('path/to/image.jpg') # 转换为灰度图像 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 二值化处理 _, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 轮廓提取 contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 绘制轮廓 cv2.drawContours(image, contours, -1, (0, 255, 0), 2) # 显示结果 cv2.imshow('Contours', image) cv2.waitKey(0) cv2.destroyAllWindows()
结论:
本文介绍了如何使用Python中的OpenCV库对图片进行轮廓提取。通过对图像进行灰度转换、二值化处理和使用findContours
rrreee
cvtColor
d'OpenCV. 🎜rrreee🎜🎜🎜Binarisation à l'aide de seuils🎜L'extraction de contours est souvent obtenue en binarisant l'image. Vous pouvez utiliser la fonction threshold
d'OpenCV pour convertir des images en niveaux de gris en images binaires. 🎜rrreee🎜🎜🎜Extraction de contour🎜Utilisez la fonction findContours
d'OpenCV pour effectuer une extraction de contour sur des images binaires. Cette fonction renvoie les contours et la hiérarchie extraits. 🎜rrreee🎜🎜🎜Dessiner des contours🎜Vous pouvez utiliser la fonction drawContours
d'OpenCV pour dessiner les contours extraits sur l'image originale. 🎜rrreee🎜🎜🎜Affichez les résultats🎜Enfin, utilisez la fonction imshow
d'OpenCV pour afficher les résultats. 🎜rrreee🎜🎜Exemple de code complet : 🎜rrreee🎜Conclusion : 🎜Cet article présente comment utiliser la bibliothèque OpenCV en Python pour effectuer une extraction de contours sur des images. En effectuant une conversion et une binarisation en niveaux de gris sur l'image et en utilisant la fonction findContours
pour extraire les contours, les contours extraits peuvent enfin être dessinés sur l'image originale. L'extraction de contours peut être largement utilisée dans le traitement d'images, la vision par ordinateur, la détection de cibles et d'autres domaines, et constitue une technologie très pratique. 🎜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!