目錄
一、建立Python環境
二、如何在您的電腦上安裝Tesseract OCR?
1.導入庫
2.取得輸入
3.預處理輸入
4.在輸入端偵測車牌
5.识别检测到的车牌
6.显示输出
三、磨砺您的Python技能
首頁 後端開發 Python教學 如何使用Python偵測並辨識車牌?

如何使用Python偵測並辨識車牌?

Apr 14, 2023 pm 12:34 PM
python 識別 車牌

譯者| 布加迪

審校| 孫淑娟

車牌偵測與辨識技術用途廣泛,可用於道路系統、無票停車場、車輛門禁等。這項技術結合了電腦視覺和人工智慧。

本文將使用Python建立一個車牌偵測和辨識程式。程式對輸入影像進行處理,偵測並識別車牌,最後顯示車牌字符,作為輸出內容。

一、建立Python環境

要輕鬆完成本教學,您需要熟悉Python基礎。應先創建程式環境。

在開始程式設計之前,您需要在環境中安裝幾個函式庫。開啟任何Python IDE,建立一個Python檔。在終端機上運行命令以安裝相應的庫。您應該在電腦上預先安裝Python PIP。

  • OpenCV-Python:您將使用這個函式庫對輸入影像進行預處理,並顯示各個輸出影像。 pip install OpenCV-Python
  • imutils:您將使用這個函式庫將原始輸入影像裁切成所需的寬度。 pip install imutils
  • pytesseract:您將使用這個庫提取車牌字符,並將它們轉換成字串。 pip install pytesseractpytesseract函式庫依賴Tesseract OCR引擎進行字元辨識。

二、如何在您的電腦上安裝Tesseract OCR?

Tesseract OCR是一種可以辨識語言字元的引擎。在使用pytesseract庫之前,您應該在電腦上安裝它。步驟如下:

1. 開啟任何基於Chrome的瀏覽器。

2. 下載Tesseract OCR安裝程式。

3. 執行安裝程序,像安裝其他程式一樣安裝它。

準備好環境並安裝tesseract OCR後,您就可以編寫程式了。

1.導入庫

首先導入在環境中安裝的庫。導入庫讓您可以在專案中呼叫和使用它們的函數。

  • import cv2
  • import imutils
  • import pytesseract

您需要以cv2形式導入OpenCV-Python庫。使用與安裝時相同的名稱匯入其他庫。

2.取得輸入

然後將pytesseract指向安裝Tesseract引擎的位置。使用cv2.imread函數將汽車影像作為輸入。將圖像名稱換成您正在使用的圖像的名稱。將圖像儲存在專案所在的同一個資料夾中,以方便操作。

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

您可以將下面的輸入圖像換成想要使用的圖像。

3.預處理輸入

將影像寬度調整為500像素,然後將影像轉換成灰階影像,因為canny邊緣偵測函數只適用於灰階影像。最後,呼叫bilateralFilter函數以降低影像雜訊。

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.在輸入端偵測車牌

#偵測車牌是確定汽車上有車牌字元的那​​部分的過程。

(1)執行邊緣偵測

#先呼叫cv2.Canny函數,該函數可自動偵測預處理影像上的邊緣。

edged_image = cv2.Canny(gray_image, 30,200)
登入後複製

我們將透過這些邊緣找到輪廓。

(2)尋找輪廓

#呼叫cv2.findContours函數,並傳遞邊緣圖像的副本。這個函數將檢測輪廓。使用cv2.drawContours函數,繪製原始影像上已偵測的輪廓。最後,輸出所有可見輪廓已繪製的原始影像。

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)
登入後複製

該程式繪製它在汽車圖像上找到的所有輪廓。

如何使用Python偵測並辨識車牌?

找到輪廓後,您需要對它們進行篩選,以確定最佳候選輪廓。

(3)篩選輪廓

#根據最小面積30對輪廓進行篩選。忽略小於這個面積的輪廓,因為它們不太可能是車牌輪廓。複製原始影像,在影像上繪製前30個輪廓。最後,顯示圖像。

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)
登入後複製

現在輪廓數量比開始時要少。唯一繪製的輪廓是那些近似含有車牌的輪廓。

如何使用Python偵測並辨識車牌?

最後,您需要遍歷篩選的輪廓,確定哪一個是車牌。

(4)遍歷前30個輪廓

#建立遍歷輪廓的for迴圈。尋找有四個角的輪廓,確定其周長和座標。儲存含有車牌的輪廓的圖像。最後,在原始影像上繪製車牌輪廓並加以顯示。

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 )
登入後複製

循環之後,程式已辨識出含有車牌的那個輪廓。

#

如何使用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')
登入後複製

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

如何使用Python偵測並辨識車牌?

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

6.显示输出

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

print("License plate is:", text)
cv2.waitKey(0)
cv2.destroyAllWindows()
登入後複製

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

如何使用Python偵測並辨識車牌?

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

三、磨砺您的Python技能

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

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

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

以上是如何使用Python偵測並辨識車牌?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

See all articles