Maison développement back-end Tutoriel Python Introduction à la vision par ordinateur avec Python (partie 1)

Introduction à la vision par ordinateur avec Python (partie 1)

Sep 10, 2024 am 06:44 AM

Remarque : Dans cet article, nous travaillerons uniquement avec des images en niveaux de gris pour le rendre facile à suivre.

Qu'est-ce qu'une image ?

Une image peut être considérée comme une matrice de valeurs, où chaque valeur représente l'intensité d'un pixel. Il existe trois principaux types de formats d'image :

  • Binaire : Une image dans ce format est représentée par une seule matrice 2D avec des valeurs de 0 (noir) et 1 (blanc). C'est la forme la plus simple de représentation d'image.

Introduction To Computer Vision with Python (Part 1)

  • Échelle de gris : Dans ce format, une image est représentée par une seule matrice 2D avec des valeurs allant de 0 à 255 ; où 0 représente le noir et 255 représente le blanc. Les valeurs intermédiaires représentent différentes nuances de gris.

Introduction To Computer Vision with Python (Part 1)

  • Échelle RVB : Ici, une image est représentée par trois matrices 2D (une pour chaque canal de couleur : Rouge, Vert et Bleu), avec des valeurs allant de 0 à 255. Chaque matrice contient des valeurs de pixels pour une composante de couleur, et la combinaison de ces trois canaux nous donne l'image en couleur.

Introduction To Computer Vision with Python (Part 1)

Filtres

Les filtres sont des outils utilisés pour modifier les images en appliquant certaines opérations. Un filtre est une matrice (également appelée noyau) qui se déplace sur l'image et effectue des calculs sur les valeurs des pixels dans sa fenêtre. Nous couvrirons deux types courants de filtres : les filtres moyens et les filtres médians.

Filtres moyens

Un filtre moyen est utilisé pour réduire le bruit en faisant la moyenne des valeurs de pixels dans une fenêtre. Il remplace le pixel central de la fenêtre par la moyenne de toutes les valeurs de pixels de cette fenêtre. La fonction cv2.blur() applique un filtre moyen avec une taille de noyau de 3x3, ce qui signifie qu'elle considère une fenêtre 3x3 de pixels autour de chaque pixel pour calculer la moyenne. Cela aide à lisser l'image.

import cv2
import matplotlib.pyplot as plt

image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE)

# Applies a Mean Filter of size 3 x 3
blurred_image = cv2.blur(image, (3, 3))

plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis("off")

plt.subplot(1, 2, 2)
plt.imshow(blurred_image, cmap='gray')
plt.title('Mean Filtered Image')
plt.axis("off")
plt.show()

Introduction To Computer Vision with Python (Part 1)

Filtres médians

Un filtre médian est utilisé pour réduire le bruit en remplaçant la valeur de chaque pixel par la valeur médiane de tous les pixels d'une fenêtre. Il est particulièrement efficace pour éliminer le bruit poivre et sel. La fonction cv2.medianBlur() applique un filtre médian avec une taille de noyau de 3. Cette méthode remplace chaque pixel par la valeur médiane des valeurs de pixel de son voisinage, ce qui aide à préserver les bords tout en supprimant le bruit. Ici, plus la taille du noyau est grande, plus l'image devient floue.

import cv2
import matplotlib.pyplot as plt

image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE)

# Applies a Median Filter with a kernel size of 3
blurred_image = cv2.medianBlur(image, 3)

plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis("off")

plt.subplot(1, 2, 2)
plt.imshow(blurred_image, cmap='gray')
plt.title('Median Filtered Image')
plt.axis("off")
plt.show()

Introduction To Computer Vision with Python (Part 1)

Filtres personnalisés

Vous pouvez créer des filtres personnalisés pour appliquer des opérations spécifiques sur vos images. La fonction cv2.filter2D() vous permet d'appliquer n'importe quel noyau personnalisé à une image. La fonction cv2.filter2D() applique un noyau personnalisé (filtre) à l'image. Le noyau est une matrice qui définit l'opération à effectuer sur les valeurs des pixels. Dans cet exemple, le noyau améliore certaines fonctionnalités de l'image en fonction des valeurs spécifiées.

import cv2
import numpy as np
import matplotlib.pyplot as plt

image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE)

# Define a custom filter kernel
kernel = np.array([[2, -1, 5],
                   [-5, 5, -1],
                   [0, -1, 0]])

filtered_image = cv2.filter2D(image, -1, kernel)

plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(filtered_image, cmap='gray')
plt.title('Filtered Image')
plt.axis('off')

plt.show()

Introduction To Computer Vision with Python (Part 1)

Seuil

Remarque : Dans les extraits de code, vous verrez _ , image lors de l'attribution de l'image seuillée. En effet, la fonction cv2.threshold renvoie deux valeurs : la valeur seuil utilisée et l'image seuillée. Puisque nous n'avons besoin que de l'image seuillée, nous utilisons _ pour ignorer la valeur seuil.

Le seuil convertit une image en image binaire en définissant les valeurs de pixels en fonction d'une condition. Il existe plusieurs types de techniques de seuillage :

Seuil global

Seuil simple

Cette méthode définit une valeur seuil fixe pour l'ensemble de l'image. Les pixels avec des valeurs supérieures au seuil sont définis sur la valeur maximale (255) et ceux en dessous sont définis sur 0. La fonction cv2.threshold() est utilisée pour un seuillage simple. Les pixels d'intensité supérieure à 127 sont définis sur blanc (255) et ceux dont l'intensité est inférieure ou égale à 127 sont définis sur noir (0), produisant une image binaire.

import cv2
import matplotlib.pyplot as plt

image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE)

_, thresholded_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)

plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis("off")

plt.subplot(1, 2, 2)
plt.imshow(thresholded_image, cmap='gray')
plt.title('Thresholded Image')
plt.axis("off")
plt.show()

Introduction To Computer Vision with Python (Part 1)

Otsu Thresholding

Otsu's method determines the optimal threshold value automatically based on the histogram of the image. This method minimizes intra-class variance and maximizes inter-class variance. By setting the threshold value to 0 and using cv2.THRESH_OTSU, the function automatically calculates the best threshold value to separate the foreground from the background.

import cv2
import matplotlib.pyplot as plt

image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE)

_, otsu_thresholded_image = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis("off")

plt.subplot(1, 2, 2)
plt.imshow(otsu_thresholded_image, cmap='gray')
plt.title("Otsu's Thresholded Image")
plt.axis("off")
plt.show()

Introduction To Computer Vision with Python (Part 1)

Adaptive Thresholding

Mean Adaptive Thresholding

In Mean Adaptive Thresholding, the threshold value for each pixel is calculated based on the average of pixel values in a local neighborhood around that pixel. This method adjusts the threshold dynamically across different regions of the image. The cv2.adaptiveThreshold() function calculates the threshold for each pixel based on the mean value of the pixel values in a local 11x11 neighborhood. A constant value of 2 is subtracted from this mean to fine-tune the threshold. This method is effective for images with varying lighting conditions.

import cv2
import matplotlib.pyplot as plt

image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE)

mean_adaptive_thresholded_image = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)

plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis("off")

plt.subplot(1, 2, 2)
plt.imshow(mean_adaptive_thresholded_image, cmap='gray')
plt.title('Mean Adaptive Thresholded Image')
plt.axis("off")
plt.show()

Introduction To Computer Vision with Python (Part 1)

Gaussian Adaptive Thresholding

Gaussian Adaptive Thresholding computes the threshold value for each pixel based on a Gaussian-weighted sum of the pixel values in a local neighborhood. This method often provides better results in cases with non-uniform illumination. In Gaussian Adaptive Thresholding, the threshold is determined by a Gaussian-weighted sum of pixel values in an 11x11 neighborhood. The constant value 2 is subtracted from this weighted mean to adjust the threshold. This method is useful for handling images with varying lighting and shadows.

import cv2
import matplotlib.pyplot as plt

image = cv2.imread('McLaren-720S-Price-1200x675.jpg', cv2.IMREAD_GRAYSCALE)

gaussian_adaptive_thresholded_image = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)

plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis("off")

plt.subplot(1, 2, 2)
plt.imshow(gaussian_adaptive_thresholded_image, cmap='gray')
plt.title('Gaussian Adaptive Thresholded Image')
plt.axis("off")
plt.show()

Introduction To Computer Vision with Python (Part 1)

References

  • Encord.com
  • Pyimagesearch.com
  • OpenCV Thresholding
  • OpenCV Filtering

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 de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Polymorphisme dans les classes python Polymorphisme dans les classes python Jul 05, 2025 am 02:58 AM

Le polymorphisme est un concept de base dans la programmation orientée objet Python, se référant à "une interface, plusieurs implémentations", permettant le traitement unifié de différents types d'objets. 1. Le polymorphisme est implémenté par la réécriture de la méthode. Les sous-classes peuvent redéfinir les méthodes de classe parent. Par exemple, la méthode Spoke () de classe animale a des implémentations différentes dans les sous-classes de chiens et de chats. 2. Les utilisations pratiques du polymorphisme comprennent la simplification de la structure du code et l'amélioration de l'évolutivité, tels que l'appel de la méthode Draw () uniformément dans le programme de dessin graphique, ou la gestion du comportement commun des différents personnages dans le développement de jeux. 3. Le polymorphisme de l'implémentation de Python doit satisfaire: la classe parent définit une méthode, et la classe enfant remplace la méthode, mais ne nécessite pas l'héritage de la même classe parent. Tant que l'objet implémente la même méthode, c'est ce qu'on appelle le "type de canard". 4. Les choses à noter incluent la maintenance

Arguments et paramètres de fonction Python Arguments et paramètres de fonction Python Jul 04, 2025 am 03:26 AM

Les paramètres sont des espaces réservés lors de la définition d'une fonction, tandis que les arguments sont des valeurs spécifiques transmises lors de l'appel. 1. Les paramètres de position doivent être passés dans l'ordre, et l'ordre incorrect entraînera des erreurs dans le résultat; 2. Les paramètres de mots clés sont spécifiés par les noms de paramètres, qui peuvent modifier l'ordre et améliorer la lisibilité; 3. Les valeurs de paramètres par défaut sont attribuées lorsqu'elles sont définies pour éviter le code en double, mais les objets variables doivent être évités comme valeurs par défaut; 4. Les args et * kwargs peuvent gérer le nombre incertain de paramètres et conviennent aux interfaces générales ou aux décorateurs, mais doivent être utilisées avec prudence pour maintenir la lisibilité.

Python `@ ClassMethod` Décorateur expliqué Python `@ ClassMethod` Décorateur expliqué Jul 04, 2025 am 03:26 AM

Une méthode de classe est une méthode définie dans Python via le décorateur @classMethod. Son premier paramètre est la classe elle-même (CLS), qui est utilisée pour accéder ou modifier l'état de classe. Il peut être appelé via une classe ou une instance, qui affecte la classe entière plutôt que par une instance spécifique; Par exemple, dans la classe de personne, la méthode show_count () compte le nombre d'objets créés; Lorsque vous définissez une méthode de classe, vous devez utiliser le décorateur @classMethod et nommer le premier paramètre CLS, tel que la méthode Change_var (new_value) pour modifier les variables de classe; La méthode de classe est différente de la méthode d'instance (auto-paramètre) et de la méthode statique (pas de paramètres automatiques), et convient aux méthodes d'usine, aux constructeurs alternatifs et à la gestion des variables de classe. Les utilisations courantes incluent:

Expliquez les générateurs et itérateurs Python. Expliquez les générateurs et itérateurs Python. Jul 05, 2025 am 02:55 AM

Les itérateurs sont des objets qui implémentent __iter __ () et __Next __ (). Le générateur est une version simplifiée des itérateurs, qui implémentent automatiquement ces méthodes via le mot clé de rendement. 1. L'ITERATOR renvoie un élément chaque fois qu'il appelle Next () et lance une exception d'arrêt lorsqu'il n'y a plus d'éléments. 2. Le générateur utilise la définition de la fonction pour générer des données à la demande, enregistrer la mémoire et prendre en charge les séquences infinies. 3. Utilisez des itérateurs lors du traitement des ensembles existants, utilisez un générateur lors de la génération de Big Data ou de l'évaluation paresseuse, telles que le chargement ligne par ligne lors de la lecture de fichiers volumineux. Remarque: les objets itérables tels que les listes ne sont pas des itérateurs. Ils doivent être recréés après que l'itérateur a atteint sa fin, et le générateur ne peut le traverser qu'une seule fois.

Comment combiner deux listes dans Python? Comment combiner deux listes dans Python? Jun 30, 2025 am 02:04 AM

Il existe de nombreuses façons de fusionner deux listes, et le choix du bon moyen peut améliorer l'efficacité. 1. Utilisez l'épissage du numéro pour générer une nouvelle liste, telle que List1 List2; 2. Use = pour modifier la liste originale, telle que list1 = list2; 3. Utilisez la méthode Extend () pour fonctionner sur la liste originale, telle que list1.extend (list2); 4. Utilisez le numéro pour déballer et fusionner (Python3.5), tels que [list1, * list2], qui prend en charge la combinaison flexible de plusieurs listes ou d'ajout d'éléments. Différentes méthodes conviennent à différents scénarios, et vous devez choisir en fonction de la modification de la liste originale et de la version Python.

Comment gérer l'authentification de l'API dans Python Comment gérer l'authentification de l'API dans Python Jul 13, 2025 am 02:22 AM

La clé pour gérer l'authentification de l'API est de comprendre et d'utiliser correctement la méthode d'authentification. 1. Apikey est la méthode d'authentification la plus simple, généralement placée dans l'en-tête de demande ou les paramètres d'URL; 2. BasicAuth utilise le nom d'utilisateur et le mot de passe pour la transmission de codage Base64, qui convient aux systèmes internes; 3. OAuth2 doit d'abord obtenir le jeton via client_id et client_secret, puis apporter le Bearertoken dans l'en-tête de demande; 4. Afin de gérer l'expiration des jetons, la classe de gestion des jetons peut être encapsulée et rafraîchie automatiquement le jeton; En bref, la sélection de la méthode appropriée en fonction du document et le stockage en toute sécurité des informations clés sont la clé.

Quelles sont les méthodes Python Magic ou les méthodes Dunder? Quelles sont les méthodes Python Magic ou les méthodes Dunder? Jul 04, 2025 am 03:20 AM

Les MagicMethodes de Python (ou Méthodes Dunder) sont des méthodes spéciales utilisées pour définir le comportement des objets, qui commencent et se terminent par un double soulignement. 1. Ils permettent aux objets de répondre aux opérations intégrées, telles que l'addition, la comparaison, la représentation des chaînes, etc.; 2. Les cas d'utilisation courants incluent l'initialisation et la représentation des objets (__init__, __repr__, __str__), les opérations arithmétiques (__add__, __sub__, __mul__) et les opérations de comparaison (__eq__, ___lt__); 3. Lorsque vous l'utilisez, assurez-vous que leur comportement répond aux attentes. Par exemple, __Repr__ devrait retourner les expressions d'objets refactorables et les méthodes arithmétiques devraient renvoyer de nouvelles instances; 4. Des choses sur l'utilisation ou la confusion doivent être évitées.

Comment fonctionne la gestion de la mémoire Python? Comment fonctionne la gestion de la mémoire Python? Jul 04, 2025 am 03:26 AM

PythonManagesMemoryAutomAticalusingreferenceCountandAgarBageCollect

See all articles