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