Maison  >  Article  >  développement back-end  >  Comment utiliser Python pour extraire les contours des images

Comment utiliser Python pour extraire les contours des images

王林
王林original
2023-08-26 16:33:302054parcourir

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.

  1. 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
  2. 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
  3. 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')
  4. 转换为灰度图像
    由于轮廓提取通常在灰度图像上进行,因此需要将彩色图像转换为灰度图像。可以使用OpenCV的cvtColor函数实现。

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  5. 使用阈值进行二值化处理
    轮廓提取常常通过对图像进行二值化处理来实现。可以使用OpenCV的threshold函数将灰度图像转化为二值图像。

    _, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
  6. 进行轮廓提取
    使用OpenCV的findContours函数对二值图像进行轮廓提取。该函数会返回提取得到的轮廓以及层次结构。

    contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
  7. 绘制轮廓
    可以使用OpenCV的drawContours函数将提取得到的轮廓绘制在原始图像上。

    cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
  8. 显示结果
    最后使用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库对图片进行轮廓提取。通过对图像进行灰度转换、二值化处理和使用findContoursrrreee

🎜🎜Convertir en image en niveaux de gris🎜Étant donné que l'extraction de contour est généralement effectuée sur des images en niveaux de gris, les images couleur doivent être converties en images en niveaux de gris. Ceci peut être réalisé en utilisant la fonction 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn