Maison  >  Article  >  développement back-end  >  Comment mesurer les angles sur des images en utilisant Python

Comment mesurer les angles sur des images en utilisant Python

PHPz
PHPzoriginal
2023-08-26 12:09:162899parcourir

Comment mesurer les angles sur des images en utilisant Python

Comment utiliser Python pour mesurer des angles sur des images

Présentation :
Le traitement d'image est une tâche importante dans le domaine de la vision par ordinateur, dans laquelle la mesure d'angle est une exigence courante. Dans cet article, nous utiliserons le langage Python pour mesurer les angles sur des images et démontrerons le processus à travers des exemples de code.

Étape 1 : Importer les bibliothèques nécessaires
Tout d'abord, nous devons importer les bibliothèques Python nécessaires. Parmi eux, OpenCV est une bibliothèque de vision par ordinateur largement utilisée qui fournit de nombreux outils de traitement d'images et de calcul. NumPy est une bibliothèque de calcul scientifique couramment utilisée qui constitue la base de calculs numériques efficaces.

import cv2
import numpy as np

Étape 2 : Charger l'image
Étape suivante, nous devons charger l'image. Utilisez la fonction imread d'OpenCV pour charger facilement des images. Utilisez le chemin de l'image comme paramètre de la fonction, et la fonction renverra un tableau NumPy représentant l'image. imread函数可以方便地加载图片。将图片路径作为函数的参数,函数将返回一个表示图片的NumPy数组。

image_path = 'path_to_your_image.jpg'
image = cv2.imread(image_path)

步骤3: 图片预处理
在对图片进行角度测量之前,我们需要对图片进行一些预处理。为了减少噪声的影响并提高测量的准确性,我们可以将图片转换为灰度图像,并应用高斯模糊。

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)

步骤4: 边缘检测
为了测量图片中的角度,我们需要检测出图片中的边缘。这可以通过使用Canny边缘检测算法来实现。

edges = cv2.Canny(blurred, 50, 150)

步骤5: 轮廓检测
接下来,我们需要检测出图片中的轮廓。我们可以使用OpenCV的findContours

contours, _ = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

Étape 3 : Prétraitement de l'image

Avant de mesurer l'angle de l'image, nous devons effectuer un prétraitement sur l'image. Afin de réduire l'impact du bruit et d'améliorer la précision des mesures, nous pouvons convertir l'image en une image en niveaux de gris et appliquer un flou gaussien.

best_fit_rect = None
max_area = 0

for contour in contours:
    (x, y, w, h) = cv2.boundingRect(contour)
    area = w * h
    
    if area > max_area:
        max_area = area
        best_fit_rect = cv2.minAreaRect(contour)

angle = best_fit_rect[-1]

Étape 4 : Détection des bords

Afin de mesurer l'angle dans l'image, nous devons détecter les bords de l'image. Ceci peut être réalisé en utilisant l'algorithme de détection de bord Canny.

result_image = image.copy()
cv2.putText(result_image, f"Angle: {angle}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.imshow("Result", result_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Étape 5 : Détection des contours

Ensuite, nous devons détecter les contours dans l'image. Nous pouvons utiliser la fonction findContours d'OpenCV pour réaliser cette opération.
rrreee

Étape 6 : Trouvez le rectangle le mieux ajusté

Dans la mesure d'angle, nous utilisons généralement le rectangle le mieux ajusté pour estimer l'angle. En trouvant le rectangle le mieux adapté à tous les contours, nous pouvons obtenir une valeur d'angle approximative.

rrreee🎜Étape 7 : Afficher les résultats🎜Enfin, nous pouvons afficher l'angle mesuré sur l'image et enregistrer le résultat sous une nouvelle image. 🎜rrreee🎜Résumé :🎜En utilisant le langage Python et la bibliothèque OpenCV, nous pouvons facilement effectuer des mesures d'angle sur des images. En chargeant des images, en prétraitant, en détectant les contours et en ajustant les rectangles, nous pouvons obtenir une valeur d'angle approximative et afficher le résultat sur l'image. Cette méthode a des applications pratiques dans de nombreux domaines, tels que la mesure technique, l'analyse d'images médicales, etc. 🎜🎜Bien que cet article fournisse un exemple de base de mesure d'angle, dans les applications réelles, d'autres défis et complications peuvent survenir. Selon des besoins spécifiques, nous pouvons modifier et optimiser le code en fonction de la situation réelle. 🎜

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