


Comment détecter et reconnaître les plaques d'immatriculation en utilisant Python ?
Traducteur | Bugatti
Reviewer | Sun Shujuan
La technologie de détection et de reconnaissance des plaques d'immatriculation est largement utilisée et peut être utilisée dans les systèmes routiers, les parkings sans ticket, le contrôle d'accès des véhicules, etc. Cette technologie combine vision par ordinateur et intelligence artificielle.
Cet article utilisera Python pour créer un programme de détection et de reconnaissance de plaques d'immatriculation. Le programme traite l'image d'entrée, détecte et reconnaît la plaque d'immatriculation et affiche enfin les caractères de la plaque d'immatriculation en sortie.
1. Créer un environnement Python
Pour réaliser ce tutoriel facilement, vous devez être familier avec les bases de Python. L'environnement du programme doit être créé en premier.
Avant de commencer la programmation, vous devez installer plusieurs bibliothèques dans votre environnement. Ouvrez n'importe quel IDE Python et créez un fichier Python. Exécutez la commande sur le terminal pour installer la bibliothèque correspondante. Python PIP doit être préinstallé sur votre ordinateur.
- OpenCV-Python : Vous utiliserez cette bibliothèque pour prétraiter les images d'entrée et afficher les images de sortie individuelles. pip install OpenCV-Python
- imutils : Vous utiliserez cette bibliothèque pour recadrer l'image d'entrée d'origine à la largeur souhaitée. pip install imutils
- pytesseract : Vous utiliserez cette bibliothèque pour extraire les caractères de plaque d'immatriculation et les convertir en chaînes. pip install pytesseract La bibliothèque pytesseract s'appuie sur le moteur Tesseract OCR pour la reconnaissance de caractères.
2. Comment installer Tesseract OCR sur votre ordinateur ?
Tesseract OCR est un moteur capable de reconnaître les caractères d'une langue. Avant d'utiliser la bibliothèque pytesseract, vous devez l'installer sur votre ordinateur. Les étapes sont les suivantes :
1. Ouvrez n'importe quel navigateur basé sur Chrome.
2. Téléchargez le programme d'installation de Tesseract OCR.
3. Exécutez le programme d'installation et installez-le comme n'importe quel autre programme.
Après avoir préparé l'environnement et installé tesseract OCR, vous pouvez écrire le programme.
1. Importer les bibliothèques
Importez d'abord les bibliothèques installées dans l'environnement. L'importation de bibliothèques vous permet d'appeler et d'utiliser leurs fonctions dans votre projet.
- import cv2
- imutils
- import pytesseract
Vous devez importer la bibliothèque OpenCV-Python sous forme cv2. Importez d'autres bibliothèques en utilisant les mêmes noms que lors de l'installation.
2. Obtenez l'entrée
et pointez pytesseract vers l'emplacement où le moteur Tesseract est installé. Utilisez la fonction cv2.imread pour prendre l'image de la voiture en entrée. Remplacez le nom de l'image par le nom de l'image que vous utilisez. Stockez les images dans le même dossier que votre projet pour en faciliter l'utilisation.
pytesseract.pytesseract.tesseract_cmd = 'C:\Program Files\Tesseract-OCR\tesseract.exe' original_image = cv2.imread('image3.jpeg')
Vous pouvez remplacer l'image d'entrée ci-dessous par l'image que vous souhaitez utiliser.
3. Prétraiter l'entrée
Ajustez la largeur de l'image à 500 pixels, puis convertissez l'image en image en niveaux de gris, car la fonction de détection des bords astucieuse ne fonctionne que sur les images en niveaux de gris. Enfin, la fonction bilatéraleFilter est appelée pour réduire le bruit de l’image.
original_image = imutils.resize(original_image, width=500 ) gray_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY) gray_image = cv2.bilateralFilter(gray_image, 11, 17, 17)
4. Détecter la plaque d'immatriculation à l'entrée
La détection de la plaque d'immatriculation est le processus de détermination de la partie de la voiture qui porte les caractères de la plaque d'immatriculation.
(1) Effectuer une détection des bords
Appelez d'abord la fonction cv2.Canny, qui peut détecter automatiquement les bords sur l'image prétraitée.
edged_image = cv2.Canny(gray_image, 30,200)
Nous retrouverons le contour à travers ces bords.
(2) Rechercher des contours
Appelez la fonction cv2.findContours et transmettez une copie de l'image de bord. Cette fonction détectera les contours. Utilisez la fonction cv2.drawContours pour dessiner les contours détectés sur l'image d'origine. Enfin, affichez l'image originale avec tous les contours visibles dessinés.
contours, new = cv2.findContours(edged_image.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) img1 = original_image.copy() cv2.drawContours(img1, contours, -1, (0, 255, 0), 3) cv2.imshow("img1", img1)
Le programme dessine tous les contours qu'il trouve sur l'image de la voiture.
Après avoir trouvé les contours, vous devez les filtrer pour identifier les meilleurs candidats.
(3) Filtrer les contours
Filtrer les contours en fonction d'une surface minimale de 30. Les contours plus petits que cette zone sont ignorés car il est peu probable qu'il s'agisse de contours de plaques d'immatriculation. Faites une copie de l'image originale et dessinez les 30 premiers contours sur l'image. Enfin, l'image s'affiche.
contours = sorted(contours, key = cv2.contourArea, reverse = True)[:30] # stores the license plate contour screenCnt = None img2 = original_image.copy() # draws top 30 contours cv2.drawContours(img2, contours, -1, (0, 255, 0), 3) cv2.imshow("img2", img2)
Maintenant, le nombre de contours est inférieur à celui du début. Les seuls contours dessinés sont ceux qui contiennent approximativement la plaque d'immatriculation.
Enfin, vous devez parcourir les contours filtrés pour déterminer lequel est la plaque d'immatriculation.
(4) Parcourez les 30 premiers contours
Créez une boucle for qui traverse les contours. Trouvez un contour à quatre coins et déterminez son périmètre et ses coordonnées. Stockez une image contenant le contour d’une plaque d’immatriculation. Enfin, le contour de la plaque d'immatriculation est dessiné sur l'image originale et affiché.
count = 0 idx = 7 for c in contours: # approximate the license plate contour contour_perimeter = cv2.arcLength(c, True) approx = cv2.approxPolyDP(c, 0.018 * contour_perimeter, True) # Look for contours with 4 corners if len(approx) == 4: screenCnt = approx # find the coordinates of the license plate contour x, y, w, h = cv2.boundingRect(c) new_img = original_image [ y: y + h, x: x + w] # stores the new image cv2.imwrite('./'+str(idx)+'.png',new_img) idx += 1 break # draws the license plate contour on original image cv2.drawContours(original_image , [screenCnt], -1, (0, 255, 0), 3) cv2.imshow("detected license plate", original_image )
Après le bouclage, le programme a identifié le contour contenant la plaque d'immatriculation.
5.识别检测到的车牌
识别车牌意味着读取已裁剪车牌图像上的字符。加载之前存储的车牌图像并显示它。然后,调用pytesseract.image_to_string函数,传递已裁剪的车牌图像。这个函数将图像中的字符转换成字符串。
# filename of the cropped license plate image cropped_License_Plate = './7.png' cv2.imshow("cropped license plate", cv2.imread(cropped_License_Plate)) # converts the license plate characters to string text = pytesseract.image_to_string(cropped_License_Plate, lang='eng')
已裁剪的车牌如下所示。上面的字符将是您稍后在屏幕上输出的内容。
检测并识别车牌之后,您就可以显示输出了。
6.显示输出
这是最后一步。您将提取的文本输出到屏幕上。该文本含有车牌字符。
print("License plate is:", text) cv2.waitKey(0) cv2.destroyAllWindows()
程序的预期输出应该如下图所示:
车牌文本可以在终端上看到。
三、磨砺您的Python技能
用Python检测和识别车牌是一个有意思的项目。它有挑战性,所以应该会帮助您学到关于Python的更多知识。
说到编程,实际运用是掌握一门语言的关键。为了锻炼技能,您需要开发有意思的项目。
原文链接:https://www.makeuseof.com/python-car-license-plates-detect-and-recognize/
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

Activer l'accélération du GPU Pytorch sur le système CentOS nécessite l'installation de versions CUDA, CUDNN et GPU de Pytorch. Les étapes suivantes vous guideront tout au long du processus: CUDA et CUDNN Installation détermineront la compatibilité de la version CUDA: utilisez la commande NVIDIA-SMI pour afficher la version CUDA prise en charge par votre carte graphique NVIDIA. Par exemple, votre carte graphique MX450 peut prendre en charge CUDA11.1 ou plus. Téléchargez et installez Cudatoolkit: visitez le site officiel de Nvidiacudatoolkit et téléchargez et installez la version correspondante selon la version CUDA la plus élevée prise en charge par votre carte graphique. Installez la bibliothèque CUDNN:

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Docker utilise les fonctionnalités du noyau Linux pour fournir un environnement de fonctionnement d'application efficace et isolé. Son principe de travail est le suivant: 1. Le miroir est utilisé comme modèle en lecture seule, qui contient tout ce dont vous avez besoin pour exécuter l'application; 2. Le Système de fichiers Union (UnionFS) empile plusieurs systèmes de fichiers, ne stockant que les différences, l'économie d'espace et l'accélération; 3. Le démon gère les miroirs et les conteneurs, et le client les utilise pour l'interaction; 4. Les espaces de noms et les CGROUP implémentent l'isolement des conteneurs et les limitations de ressources; 5. Modes de réseau multiples prennent en charge l'interconnexion du conteneur. Ce n'est qu'en comprenant ces concepts principaux que vous pouvez mieux utiliser Docker.

Minio Object Storage: Déploiement haute performance dans le système Centos System Minio est un système de stockage d'objets distribué haute performance développé sur la base du langage Go, compatible avec Amazons3. Il prend en charge une variété de langages clients, notamment Java, Python, JavaScript et GO. Cet article introduira brièvement l'installation et la compatibilité de Minio sur les systèmes CentOS. Compatibilité de la version CentOS Minio a été vérifiée sur plusieurs versions CentOS, y compris, mais sans s'y limiter: CentOS7.9: fournit un guide d'installation complet couvrant la configuration du cluster, la préparation de l'environnement, les paramètres de fichiers de configuration, le partitionnement du disque et la mini

La formation distribuée par Pytorch sur le système CentOS nécessite les étapes suivantes: Installation de Pytorch: La prémisse est que Python et PIP sont installés dans le système CentOS. Selon votre version CUDA, obtenez la commande d'installation appropriée sur le site officiel de Pytorch. Pour la formation du processeur uniquement, vous pouvez utiliser la commande suivante: pipinstalltorchtorchVisionTorChaudio Si vous avez besoin d'une prise en charge du GPU, assurez-vous que la version correspondante de CUDA et CUDNN est installée et utilise la version Pytorch correspondante pour l'installation. Configuration de l'environnement distribué: la formation distribuée nécessite généralement plusieurs machines ou des GPU multiples uniques. Lieu

Lors de l'installation de Pytorch sur le système CentOS, vous devez sélectionner soigneusement la version appropriée et considérer les facteurs clés suivants: 1. Compatibilité de l'environnement du système: Système d'exploitation: Il est recommandé d'utiliser CentOS7 ou plus. CUDA et CUDNN: La version Pytorch et la version CUDA sont étroitement liées. Par exemple, Pytorch1.9.0 nécessite CUDA11.1, tandis que Pytorch2.0.1 nécessite CUDA11.3. La version CUDNN doit également correspondre à la version CUDA. Avant de sélectionner la version Pytorch, assurez-vous de confirmer que des versions compatibles CUDA et CUDNN ont été installées. Version Python: branche officielle de Pytorch

CENTOS L'installation de Nginx nécessite de suivre les étapes suivantes: Installation de dépendances telles que les outils de développement, le devet PCRE et l'OpenSSL. Téléchargez le package de code source Nginx, dézippez-le et compilez-le et installez-le, et spécifiez le chemin d'installation AS / USR / LOCAL / NGINX. Créez des utilisateurs et des groupes d'utilisateurs de Nginx et définissez les autorisations. Modifiez le fichier de configuration nginx.conf et configurez le port d'écoute et le nom de domaine / adresse IP. Démarrez le service Nginx. Les erreurs communes doivent être prêtées à prêter attention, telles que les problèmes de dépendance, les conflits de port et les erreurs de fichiers de configuration. L'optimisation des performances doit être ajustée en fonction de la situation spécifique, comme l'activation du cache et l'ajustement du nombre de processus de travail.
