Maison  >  Article  >  développement back-end  >  Comment détecter et reconnaître les plaques d'immatriculation en utilisant Python ?

Comment détecter et reconnaître les plaques d'immatriculation en utilisant Python ?

王林
王林avant
2023-04-14 12:34:022197parcourir

​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.

Comment détecter et reconnaître les plaques dimmatriculation en utilisant Python ?

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.

Comment détecter et reconnaître les plaques dimmatriculation en utilisant Python ?

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.

Comment détecter et reconnaître les plaques dimmatriculation en utilisant Python ?

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')

已裁剪的车牌如下所示。上面的字符将是您稍后在屏幕上输出的内容。

Comment détecter et reconnaître les plaques dimmatriculation en utilisant Python ?

检测并识别车牌之后,您就可以显示输出了。

6.显示输出

这是最后一步。您将提取的文本输出到屏幕上。该文本含有车牌字符。

print("License plate is:", text)
cv2.waitKey(0)
cv2.destroyAllWindows()

程序的预期输出应该如下图所示:

Comment détecter et reconnaître les plaques dimmatriculation en utilisant Python ?

车牌文本可以在终端上看到。

三、磨砺您的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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer