Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengesan dan mengenali plat lesen menggunakan Python?

Bagaimana untuk mengesan dan mengenali plat lesen menggunakan Python?

王林
王林ke hadapan
2023-04-14 12:34:022128semak imbas

​Penterjemah |. Bugatti

Penyemak |. Kawalan akses kenderaan, dsb. Teknologi ini menggabungkan penglihatan komputer dan kecerdasan buatan.

Artikel ini akan menggunakan Python untuk mencipta program pengesanan dan pengecaman plat lesen. Program ini memproses imej input, mengesan dan mengenali plat lesen, dan akhirnya memaparkan aksara plat lesen sebagai output.

1 Cipta persekitaran Python

Untuk melengkapkan tutorial ini dengan mudah, anda perlu biasa dengan asas Python. Persekitaran program harus diwujudkan terlebih dahulu.

Sebelum anda memulakan pengaturcaraan, anda perlu memasang beberapa perpustakaan dalam persekitaran anda. Buka mana-mana IDE Python dan buat fail Python. Jalankan arahan pada terminal untuk memasang perpustakaan yang sepadan. Anda sepatutnya mempunyai Python PIP pra-pasang pada komputer anda.

OpenCV-Python: Anda akan menggunakan perpustakaan ini untuk pramemproses imej input dan memaparkan imej output individu. pip install OpenCV-Python

imutils: Anda akan menggunakan perpustakaan ini untuk memangkas imej input asal kepada lebar yang dikehendaki. pip install imutils
  • pytesseract: Anda akan menggunakan perpustakaan ini untuk mengekstrak aksara plat lesen dan menukarnya kepada rentetan. pip install pytesseract Pustaka pytesseract bergantung pada enjin Tesseract OCR untuk pengecaman aksara.
  • 2. Bagaimana hendak memasang Tesseract OCR pada komputer anda?

Tesseract OCR ialah enjin yang boleh mengecam aksara bahasa. Sebelum menggunakan perpustakaan pytesseract, anda harus memasangnya pada komputer anda. Langkah-langkahnya adalah seperti berikut:

1. Buka mana-mana penyemak imbas berasaskan Chrome.

2. Muat turun pemasang OCR Tesseract.

3. Jalankan pemasang dan pasangkannya seperti mana-mana program lain.

Selepas menyediakan persekitaran dan memasang tesseract OCR, anda boleh menulis atur cara.

1 Import perpustakaan

Mula-mula import perpustakaan yang dipasang dalam persekitaran. Mengimport perpustakaan membolehkan anda memanggil dan menggunakan fungsinya dalam projek anda. Anda memerlukan Import perpustakaan OpenCV-Python dalam bentuk cv2. Import perpustakaan lain menggunakan nama yang sama seperti semasa dipasang.

2. Dapatkan input

    dan halakan pytesseract ke lokasi di mana enjin Tesseract dipasang. Gunakan fungsi cv2.imread untuk mengambil imej kereta sebagai input. Gantikan nama imej dengan nama imej yang anda gunakan. Simpan imej dalam folder yang sama dengan projek anda untuk kemudahan penggunaan.
  • Anda boleh menggantikan imej input di bawah dengan imej yang ingin anda gunakan.

3. Input praproses

Laraskan lebar imej kepada 500 piksel dan kemudian tukar imej kepada skala kelabu kerana fungsi pengesanan tepi cerdik sahaja pada imej skala kelabu. Akhir sekali, fungsi Penapis dua hala dipanggil untuk mengurangkan hingar imej.

4. Mengesan plat lesen di hujung input

pytesseract.pytesseract.tesseract_cmd = 'C:\Program Files\Tesseract-OCR\tesseract.exe'
original_image = cv2.imread('image3.jpeg')

Mengesan plat lesen ialah proses menentukan bahagian kereta yang mempunyai watak plat.

(1) Lakukan pengesanan tepi

Mula-mula panggil fungsi cv2.Canny, yang boleh mengesan tepi prapemprosesan secara automatik pada imej.
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)

Kami akan mencari kontur melalui tepi ini.

(2) Cari kontur

Panggil fungsi cv2.findContours dan hantar salinan imej tepi. Fungsi ini akan mengesan kontur. Gunakan fungsi cv2.drawContours untuk melukis kontur yang dikesan pada imej asal. Akhir sekali, keluarkan imej asal dengan semua kontur yang boleh dilihat dilukis.

Program ini melukis semua kontur yang ditemui pada imej kereta.

edged_image = cv2.Canny(gray_image, 30,200)

Setelah anda menemui kontur, anda perlu menapisnya untuk mengenal pasti kontur calon yang terbaik.

(3) Tapis kontur
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)

Tapis kontur berdasarkan keluasan minimum 30. Garis besar yang lebih kecil daripada kawasan ini diabaikan kerana ia tidak mungkin merupakan garis besar plat lesen. Buat salinan imej asal dan lukis 30 kontur pertama pada imej. Akhirnya, imej dipaparkan.

Bagaimana untuk mengesan dan mengenali plat lesen menggunakan Python?

Kini terdapat lebih sedikit garis besar berbanding pada mulanya. Satu-satunya kontur yang dilukis ialah kontur yang lebih kurang mengandungi plat lesen.

Akhir sekali, anda perlu mengulangi garis besar yang ditapis untuk menentukan yang mana satu plat lesen.

(4) Lintas 30 kontur pertama
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)

Buat gelung for yang merentasi kontur. Cari kontur dengan empat bucu dan tentukan perimeter dan koordinatnya. Simpan imej yang mengandungi garis besar plat lesen. Akhir sekali, garis besar plat lesen dilukis pada imej asal dan dipaparkan.

Bagaimana untuk mengesan dan mengenali plat lesen menggunakan Python?

Selepas gelung, program telah mengenal pasti garis besar yang mengandungi plat lesen.

Bagaimana untuk mengesan dan mengenali plat lesen menggunakan 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')

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

Bagaimana untuk mengesan dan mengenali plat lesen menggunakan Python?

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

6.显示输出

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

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

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

Bagaimana untuk mengesan dan mengenali plat lesen menggunakan Python?

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

三、磨砺您的Python技能

用Python检测和识别车牌是一个有意思的项目。它有挑战性,所以应该会帮助您学到关于Python的更多知识。

说到编程,实际运用是掌握一门语言的关键。为了锻炼技能,您需要开发有意思的项目。

原文链接:https://www.makeuseof.com/python-car-license-plates-detect-and-recognize/

Atas ialah kandungan terperinci Bagaimana untuk mengesan dan mengenali plat lesen menggunakan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam