成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用Python檢測和識別車牌?

譯文
開發 前端
本文將使用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)

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

圖片

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

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

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

圖片

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

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

循環之后,程序已識別出含有車牌的那個輪廓。

圖片

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/

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2024-11-28 15:56:05

YOLOEasyOCRPython

2024-01-29 08:21:59

AndroidOpenCV車牌

2020-10-15 12:00:01

Python 開發編程語言

2018-05-08 14:25:22

Pythondlib人臉檢測

2020-03-26 17:11:36

AI疫情新冠病毒

2020-03-04 10:51:35

Python算法腳本語言

2020-10-12 09:22:30

PythonCNN檢測

2014-12-16 10:28:49

2023-08-30 19:10:17

2017-10-17 15:44:53

一體機

2018-03-26 20:14:32

深度學習

2017-08-02 07:36:06

大數據PythonOpenCV

2013-08-26 10:53:26

人臉檢測API

2024-06-12 12:57:12

2024-02-17 09:00:00

機器學習AI自動檢測人工智能

2023-09-05 09:00:00

工具Python抄襲檢測系統

2017-08-03 11:00:20

2018-02-05 08:58:36

Python神經網絡識別圖像

2021-12-02 14:49:40

人工智能數據ANPR

2024-11-20 16:51:00

目標檢測模型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久99精品久久久久久国产越南 | 1204国产成人精品视频 | 91精品国产综合久久婷婷香蕉 | 99re在线| 欧美高清视频一区 | 精品国产乱码久久久久久闺蜜 | 欧美一区二区三区小说 | 国产精品精品久久久 | 国产91丝袜在线播放 | 91就要激情 | 日本精品999 | 亚洲国产成人精品女人 | 亚洲色欧美另类 | 国产中文字幕在线 | 亚洲一区不卡 | 久久免费视频1 | 伊人电影院av | 这里有精品 | 日本一区二区三区视频在线 | 午夜激情在线视频 | 国产高清精品在线 | 亚洲欧洲成人av每日更新 | 色综合色综合网色综合 | 一区二区不卡高清 | 91中文在线观看 | 国产精品久久国产精品 | 国产91观看 | 人人射人人 | 国产精品123区| 亚洲男人天堂 | 秋霞在线一区二区 | 狠狠婷婷综合久久久久久妖精 | 三极网站 | 超碰电影| 欧美一区二区三区在线观看视频 | 亚洲精品欧美 | 波多野结衣一区二区三区 | 国产精品免费一区二区三区四区 | 一级国产精品一级国产精品片 | 97精品超碰一区二区三区 | 91成人午夜性a一级毛片 |