之前我們學(xué)習(xí)了使用樹莓派和OpenCV的人臉識別。今天我們就用這兩個來用python構(gòu)建一個車牌識別系統(tǒng)。實時車牌檢測和識別對于自動收費站,找出交通規(guī)則違規(guī)者以及解決其他與車輛相關(guān)的安全問題非常有用。
所以在本教程中,我們將建立一個實時車牌識別系統(tǒng)使用樹莓派和派相機。該系統(tǒng)采用OpenCV和光學(xué)字符識別技術(shù)實現(xiàn)車牌的自動識別和讀取。Pi相機模塊連續(xù)捕獲幀,當(dāng)按下鍵盤上的一個鍵時,它將最后一幀保存為新圖像。然后利用OpenCV中的輪廓函數(shù)對車牌進(jìn)行檢測。最后,樹莓派裁剪出特定區(qū)域,并執(zhí)行光學(xué)字符識別來讀取車牌號碼。
組件的要求
?覆盆子π
?π的相機
這里只使用樹莓派和Pi相機來構(gòu)建這個樹莓派車牌識別系統(tǒng)。我們之前使用樹莓派相機,并使用它構(gòu)建了一些項目,如Web控制樹莓派監(jiān)控機器人,基于物聯(lián)網(wǎng)的智能Wi-Fi門鈴,智能閉路電視監(jiān)控系統(tǒng)等。
要了解有關(guān)如何將Pi相機與樹莓派接口的更多信息,請遵循我們之前的教程。
車牌識別的先決條件
這里我們使用OpenCV庫來檢測和識別車牌,使用Tesseract庫來讀取字符。因此,在繼續(xù)之前,首先安裝OpenCV、Tesseract和其他必需的庫。我們之前在樹莓派項目中使用了OpenCV進(jìn)行人臉識別。
在樹莓派3上安裝OpenCV
這里使用OpenCV庫來檢測和識別人臉。要安裝OpenCV,首先要更新樹莓派。
然后使用以下命令安裝所需的依賴項,以便在樹莓派上安裝OpenCV。
之后,使用下面的命令在樹莓派上安裝OpenCV。
安裝超正方體
要安裝Tesseract,首先,使用下面的命令配置Debian軟件包(dpkg):
之后,使用apt-get選項安裝Tesseract OCR(光學(xué)字符識別)。
之后,使用pip安裝pytesseract。
之后,使用下面的命令安裝PYTTSX3庫,用于文本到語音的轉(zhuǎn)換:
安裝imutils
imutils用于使基本的圖像處理功能,如平移、旋轉(zhuǎn)、調(diào)整大小、骨架化和顯示Matplotlib圖像更容易使用OpenCV。使用以下命令安裝imutils:
SMTP郵件設(shè)置樹莓派車牌識別
SMTP (Simple Mail Transfer Protocol)是在TCP/IP網(wǎng)絡(luò)上提供電子郵件服務(wù)的標(biāo)準(zhǔn)協(xié)議。該服務(wù)器提供接收和發(fā)送電子郵件消息的功能。當(dāng)樹莓派檢測并識別車牌時,我們使用SMTP發(fā)送郵件。
要在樹莓派上使用SMTP服務(wù),我們首先必須在樹莓派上安裝SMTP庫。使用下面的命令來安裝:
現(xiàn)在我們必須編輯配置文件。為此,使用以下命令打開配置文件:
然后加上下面的行。不要忘記添加您的電子郵件和電子郵件密碼。
用樹莓派進(jìn)行車牌識別的Python編程
車牌識別OpenCV python代碼涉及三個主要步驟。第一步是車牌檢測。利用輪廓函數(shù)檢測圖像中的矩形物體,找到車牌號碼。第二步是字符分割。一旦輪廓檢測到車牌,我們必須裁剪出來,并保存為一個新的圖像。最后一步是字符識別。我們將對裁剪后的圖像執(zhí)行光學(xué)字符識別來檢測數(shù)字。
完整的python車牌識別代碼在本頁末尾給出。我們在這里解釋代碼。
在代碼的開頭,為這個項目導(dǎo)入所需的包。
然后初始化相機對象,將分辨率設(shè)置為(640,480),幀率設(shè)置為30 fps。
然后使用capture_continuous函數(shù)開始從樹莓派相機捕獲幀。我們使用鍵盤鍵‘ S ’來捕捉一個特定的幀。
當(dāng)鍵盤鍵被按下時,它將占用最后一幀。在捕獲最后一幀后,它將使用雙邊過濾器功能從捕獲的圖像中刪除不需要的細(xì)節(jié)。
去除不需要的細(xì)節(jié)后,使用Canny Edge Method進(jìn)行邊緣檢測。
現(xiàn)在我們將在圖像上尋找輪廓。然后將檢測到的輪廓由大到小進(jìn)行排序。
樹莓派可以找到多個輪廓,所以我們需要在得到的結(jié)果中搜索一個有四個邊的矩形輪廓和一個閉合圖形來過濾車牌輪廓。
找到車牌后,把除車牌以外的所有東西都遮起來
在對除車牌區(qū)域外的整個圖像進(jìn)行屏蔽后,我們將裁剪出車牌區(qū)域并將其保存為新圖像。
現(xiàn)在,在最后一步中,使用Tesseract庫從車牌圖像讀取字符,并將識別的字符存儲在“text”變量中。如前所述,當(dāng)Pi檢測到車牌時,我們也會發(fā)送郵件。因此,車牌信息將發(fā)送到上述電子郵件地址。發(fā)送郵件的代碼如下。
這是如何使用Python和樹莓派構(gòu)建車牌識別。這個項目的結(jié)果不會100%準(zhǔn)確。有時它無法檢測到車牌,或者有時它讀取一些垃圾值。結(jié)果很大程度上取決于圖像質(zhì)量和圖像方向。
本文編譯自iotdesignpro