《嵌入式人工智能技術應用》課件 2.4-基于車牌識別算法實現車牌號碼識別_第1頁
《嵌入式人工智能技術應用》課件 2.4-基于車牌識別算法實現車牌號碼識別_第2頁
《嵌入式人工智能技術應用》課件 2.4-基于車牌識別算法實現車牌號碼識別_第3頁
《嵌入式人工智能技術應用》課件 2.4-基于車牌識別算法實現車牌號碼識別_第4頁
《嵌入式人工智能技術應用》課件 2.4-基于車牌識別算法實現車牌號碼識別_第5頁
已閱讀5頁,還剩48頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

項目二使用計算機視覺算法實現圖像識別嵌入式人工智能技術應用基于車牌識別算法實現車牌號碼識別任務四職業能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務四基于車牌識別算法實現車牌號碼識別了解車牌識別算法原理;理解如何使用多線程的方式實現圖像采集和車牌號碼識別。掌握利用OpenCV實現圖像的采集;掌握調用算法接口,進行車牌識別。職業能力目標01知識目標技能目標職業能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務四基于車牌識別算法實現車牌號碼識別

本實驗將實現用車牌識別算法庫對視頻流進行車牌識別并顯示在notebook。任務描述任務要求使用車牌識別算法對單張圖像進行車牌識別;基于多線程使用車牌識別算法對視頻流進行車牌識別;標注車牌框及號碼并進行顯示。任務描述與要求02職業能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務四基于車牌識別算法實現車牌號碼識別任務分析根據自己的了解說說有哪些顏色的車牌?實現車牌識別可能會涉及到哪些步驟?任務分析與計劃03任務計劃表項目名稱使用計算機視覺算法實現圖像識別任務名稱基于車牌識別算法實現車牌號碼識別計劃方式自主設計計劃要求請用6個計劃步驟來完整描述出如何完成本次任務序號任務計劃1

2

3

4

5

6通過上面的思考,你是否對本任務要完成的工作有所了解?讓我們一起來制訂完成本次任務的實施計劃吧!任務分析與計劃03職業能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務四基于車牌識別算法實現車牌號碼識別04知識儲備車牌識別簡介1車牌識別原理233車牌識別應用場景車牌識別04車牌識別系統(VehicleLicensePlateRecognition,VLPR)是計算機視頻圖像識別技術在車輛牌照識別中的一種應用。車牌識別在高速公路車輛管理中得到廣泛應用,電子收費(ETC)系統中,也是結合DSRC技術識別車輛身份的主要手段。車牌識別04車牌識別技術要求能夠將運動中的汽車牌照從復雜背景中提取并識別出來,通過車牌提取、圖像預處理、特征提取、車牌字符識別等技術,識別車輛牌號、顏色等信息,最新的技術水平為字母和數字的識別率可達到99.7%,漢字的識別率可達到99%。

汽車牌照作為車輛的唯一“身份”標識,牌照的自動識別可以在汽車不做任何改動的情況下實現汽車“身份”的自動登記和驗證。現如今,很多小區、商場、公園都用到了車牌識別系統,一個典型的車牌識別系統如圖所示:04車牌識別

系統包含車輛檢測、圖像采集、車牌識別三個部分。當有車輛到達時,車輛檢測單元感應到信號并觸發圖像采集單元采集當前的車牌圖像,然后車牌識別單元對圖像進行處理,定位出車牌位置,再將車牌中的字符分割出來進行識別,組成牌照號碼輸出給道閘。04車牌識別04知識儲備1233車牌識別簡介車牌識別原理車牌識別應用場景車牌識別就是依次實現汽車圖像的車牌定位、車牌字符分割、車牌字符識別算法的過程。04車牌識別車牌識別系統的基本工作原理及流程車牌定位就是把車牌圖像從含有汽車和背景的圖像中提取出來,其輸入的是原始的汽車圖像,輸出是車牌圖像。車牌的字符分割就是通過對車牌圖像的預處理、幾何校正等把字符從車牌圖像中分割出來,分成一個個獨立的字符,其輸入是車牌定位后得到的車牌圖像,輸出是經過預處理、幾何校正等后得到的一組單個的字符圖像,并得到各個字符的點陣數據。字符識別是依次從單個字符點陣數據中提取字符特征數據,并給出識別結果。04車牌識別車牌識別系統的基本工作原理及流程04車牌識別車牌識別系統的基本工作原理及流程

車牌定位是車牌識別的關鍵步驟,為了能在復雜背景和不均勻光照條件下快速準確定位車牌位置,基于改進IsotropicSobel邊緣檢測算子的車牌定位算法,由此來解決其存在的問題,該算法通過改進IsotropicSobel邊緣檢測算子,實現了車牌圖像在水平、垂直以及對角線方向上的紋理特征提取,然后采用Otsu算法閾值化,再對閾值化后的二值圖像做數學形態學運算得到車牌的候選區域,最后利用車牌特征去除偽車牌。04車牌識別車牌定位04車牌識別車牌識別算法實現(1)對輸入的彩色圖像進行灰度化處理;(2)Sobel邊緣檢測算子;(3)對邊緣檢測后的灰度圖進行二值化處理;(4)對車牌圖像進行圖像形態學操作。04車牌識別車牌識別算法實現算法流程圖:1、車輛檢測跟蹤模塊2、車牌定位模塊3、車牌矯正及精定位模塊4、車牌切分模塊5、車牌識別模塊6、車牌識別結果決策模塊7、車牌跟蹤模塊04車牌識別車牌識別系統采用高度模塊化的設計,將車牌識別過程的各個環節各自作為一個獨立的模塊。(1)文件分辨率低,通常由于車牌較遠,有時是由于低端相機導致的;(2)圖像模糊,尤其是運動模糊;(3)由于強光,反射或陰影造成的光照和對比度較差;(4)車牌(部分)遮擋,通常是拖車桿或車牌上的污漬;(5)前后識別結果不同,如拖車,露營車等;(6)采集車牌時,車道在相機視角中發生改變;(7)字體不同,常見于一些浮夸的車牌;(8)規避車牌識別的手段;(9)不同國家或各州間的缺乏協調。不同國家或州的兩輛車可以有相同的車牌號但是設計不同。04車牌識別車牌識別難點04知識儲備1233車牌識別簡介車牌識別原理車牌識別應用場景

車牌識別技術結合電子不停車收費系統(ETC)識別車輛,過往車輛通過道口時無須停車,即能夠實現車輛身份自動識別、自動收費。在車場管理中,為提高出入口車輛通行效率,車牌識別針對無需收停車費的車輛(如月卡車、內部免費通行車輛),建設無人值守的快速通道,免取卡、不停車的出入體驗,正改變出入停車場的管理模式。04車牌識別車牌識別應用場景1.電子警察系統

電子警察系統作為一種抓拍車輛違章違規行為的智能系統,可以完成多項違章抓拍功能,其中包括違章闖紅燈抓拍功能、違章不按車道行駛抓拍功能、違章壓線變道抓拍功能、違章壓雙黃線抓拍功能和違章逆行抓拍功能等內容。04車牌識別車牌識別應用場景2.卡口系統

卡口系統對監控路段的機動車輛進行全天候的圖像抓拍,自動識別車牌號碼,通過公安專網與卡口系統控制中心的黑名單數據庫進行比對,當發現結果相符合時,系統自動向相關人員發出警報信號。04車牌識別車牌識別應用場景3.高速公路收費系統

當車輛在高速公路收費入口站時,系統進行車牌識別,保存車牌信息,當車輛在高速公路收費出口站時,系統再次進行車牌識別,與進入車輛的車牌信息進行比對,只有進站和出站的車牌一致方可讓車輛通行。04車牌識別車牌識別應用場景4.高速公路超速抓拍系統

系統抓拍超速的車輛和識別車牌號碼,并通過公安專網將超速車輛的車牌號碼傳達到各出口處罰點,各出口處罰點用車牌識別設備對出口車輛進行車牌識別,與己經收到的超速車輛的號碼對比,一旦號碼相同立即報警。04車牌識別車牌識別應用場景5.停車場收費系統

當車輛進入停車場時,收費系統抓拍車輛圖片進行車牌識別,保存車輛信息和進入時間,當車輛離開停車場時,收費系統自動識別出該車的車牌號碼和保存車輛離開的時間,并計算出該車的停車費用,車主交完費用后,收費系統自動放行。04車牌識別車牌識別應用場景6.公交車報站系統

當公交車進入和離開公交站臺時,報站系統對其進行車牌識別,然后與數據庫中的車牌進行比對,語音報讀車牌結果和公交線路。綜上所述,車牌識別技術的廣泛應用使道路安全、交通通暢、車輛安全、環境保護得到了全面的保障。04車牌識別車牌識別應用場景職業能力目標01任務描述與要求02任務分析與計劃03知識儲備04任務實施05任務檢查與評價06任務小結07任務拓展08任務四基于車牌識別算法實現車牌號碼識別05任務實施利用多線程方式實現視頻流的車牌識別2調用車牌識別算法接口142圖片加載與人臉檢測1算法實例化3人臉屬性分析顯示算法處理的圖像調用車牌識別算法接口05調用車牌識別算法接口利用多線程,使圖像采集和算法識別同時運行,從而實現視頻流的車牌識別,并且可以避免一些因花時間太久,導致的視頻卡頓。調用車牌識別算法接口05importtimeimportcv2#引入opencv圖像處理庫fromrockximportRockX#引入車牌識別算法接口庫importipywidgetsaswidgets#jupyter畫圖庫fromIPython.displayimportdisplay#jupyter顯示庫fromlib.ft2importft#中文描繪庫1.算法實例化(1)導入相關庫carplate_det_handle=RockX(RockX.ROCKX_MODULE_CARPLATE_DETECTION)#檢測carplate_align_handle=RockX(RockX.ROCKX_MODULE_CARPLATE_ALIGN)#對齊carplate_recog_handle=RockX(RockX.ROCKX_MODULE_CARPLATE_RECOG)#識別(2)實例化算法接口對象在RockX庫中,包含了算法各種功能模式,這里采用車牌的檢測,對齊,和識別的功能模式。RockX(RockX.ROCKX_MODULE_CARPLATE_DETECTION)是車牌檢測功能的接口對象;RockX(RockX.ROCKX_MODULE_CARPLATE_ALIGN)是車牌對齊功能的接口對象;RockX(RockX.ROCKX_MODULE_CARPLATE_RECOG)是車牌識別功能的接口對象。05image_car=cv2.imread("./exp/car.jpg")2.圖片加載與顯示(1)加載圖片數據使用已經保存在當前路徑下的車牌圖片。imgbox=widgets.Image()#定義一個圖像盒子,用于裝載圖像數據display(imgbox)#將盒子顯示出來imgbox.value=cv2.imencode('.jpg',image_car)[1].tobytes()#把圖像值轉成byte類型的值(2)打印原始的照片in_img_h,in_img_w,bytesPerComponent=image_car.shape(3)獲取圖片信息獲取圖片的長,寬和通道數。調用車牌識別算法接口05ret,results=carplate_det_handle.rockx_carplate_detect(image_car,in_img_w,in_img_h,RockX.ROCKX_PIXEL_FORMAT_BGR888)3.車牌識別(1)調用車牌識別主函數接口為了獲取車牌框的位置,調用車牌檢測函數,通過對圖像的檢測,識別車牌的的位置信息。ret,align_result=carplate_align_handle.rockx_carplate_align(image_car,in_img_w,in_img_h,RockX.ROCKX_PIXEL_FORMAT_BGR888,results[0].box)(2)調用車牌對齊函數為了對車牌的圖片的傾斜等,需要對車牌進行矯正對齊。調用車牌對齊函數,通過前面得到的車牌對象,把車牌對象的位置框信息作為輸入,進行車牌的矯正對齊。rockx_carplate_align(self,in_img,width,height,pixel_fmt,in_box)參數說明:in_img:輸入圖片(numpyndarray);width:圖片寬;height:圖片高;pixel_fmt:圖片pixelformat;in_box:車牌檢測后的車牌框。返回值說明:ret:狀態碼,0為成功,其他失敗;align_result:返回對齊后的結果對象,主要包含對齊后的圖片數據信息。調用車牌識別算法接口05ret,recog_result=carplate_recog_handle.rockx_carplate_recognize(align_result.aligned_image)3.車牌識別(3)調用車牌識別主函數接口為了獲取具體的車牌信息,調用車牌識別函數,針對矯正對齊后的圖片數據結果,進行識別分析。rockx_carplate_recognize(self,in_aligned_img)參數說明:in_aligned_img:車牌對齊后的對象的圖片數據(align_result.aligned_image)。返回值說明:ret:狀態碼,0為成功,其他失??;recog_result:返回識別后的結果信息。調用車牌識別算法接口05ifrecog_resultisnotNone:cv2.rectangle(image_car,(results[0].box.left,results[0].box.top),(results[0].box.right,results[0].box.bottom),(0,255,0),2)image_car=ft.draw_text(image_car,(results[0].box.left,results[0].box.top-50),'{}'.format(recog_result),34,(0,0,255))4.顯示算法處理的圖像(1)畫車牌框和車牌號利用OpenCV在圖像上添加文字和畫出人臉框,cv2.rectangle()的作用是根據坐標,描繪一個簡單的矩形邊框參數依次為:圖片,左上角右下角位置坐標,線條顏色,線條粗細。cv2.rectangle(image,pt1=(int(left),int(top)),pt2=(int(right),int(bot)),color=(0,255,0),thickness=3)引入中文繪畫庫,用于在圖片上描繪中文字符,ft.draw_text的作用是在圖片的某個位置上添加文字信息,參數依次為,圖片,位置,文字,字體大小,字體顏色。img=ft.draw_text(img,position,'{}'.format(plate_number),34,(255,0,0))imgbox=widgets.Image()#定義一個圖像盒子,用于裝載圖像數據display(imgbox)#將盒子顯示出來imgbox.value=cv2.imencode('.jpg',image_car)[1].tobytes()#把圖像值轉成byte類型的值(2)結果可視化利用jupyter的畫圖庫和顯示庫將經過算法處理的圖像顯示。調用車牌識別算法接口05任務實施利用多線程方式實現視頻流的車牌識別2調用車牌識別算法接口142定義攝像頭采集線程1引入相關的庫3定義算法識別線程啟動與停止線程利用多線程方式實現視頻流的車牌識別05利用多線程方式實現視頻流的車牌識別利用多線程,使圖像采集和算法識別同時運行,從而實現視頻流的人臉檢測,并且可以避免一些因花時間太久,導致的視頻卡頓。05importtime#時間庫importcv2#引入opencv圖像處理庫fromlib.ft2importft#中文描繪庫importthreading#這是python的標準庫,線程庫importipywidgetsaswidgets#jupyter畫圖庫fromIPython.displayimportdisplay#jupyter顯示庫fromrockximportRockX#引入算法庫1.引入相關的庫threading線程庫多線程類似于同時執行多個不同程序,多線程運行有如下優點:使用線程可以把占據長時間的程序中的任務放到后臺去處理;用戶界面可以更加吸引人,比如用戶點擊了一個按鈕去觸發某些事件的處理,可以彈出一個進度條來顯示處理的進度;程序的運行速度可能加快;在一些等待的任務實現上如用戶輸入、文件讀寫和網絡收發數據等,線程就比較有用了。在這種情況下我們可以釋放一些珍貴的資源如內存占用等等。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。利用多線程方式實現視頻流的車牌識別05classCameraThread(threading.Thread):def__init__(self,camera_id,camera_width,camera_height):threading.Thread.__init__(self)self.working=Trueself.cap=cv2.VideoCapture(camera_id)#打開攝像頭

self.cap.set(cv2.CAP_PROP_FRAME_WIDTH,camera_width)#設置攝像頭分辨率寬度

self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT,camera_height)#設置攝像頭分辨率高度

defrun(self):globalcamera_img#定義一個全局變量,用于存儲獲取的圖片,以便于算法可以直接調用

camera_img=Nonewhileself.working:ret,image=self.cap.read()#獲取新的一幀圖片

ifret:camera_img=imagedefstop(self):self.working=Falseself.cap.release()2.定義攝像頭采集線程結合上面的opencv采集圖像的內容,利用多線程的方式串起來,形成一個可傳參,可調用的通用類。這里定義了一個全局變量camera_img,用作存儲獲取的圖片數據,以便于其他線程可以調用。init初始化函數實例化該線程的時候,會自動執行初始化函數,在初始化函數里面,打開攝像頭,并設置分辨率。run函數該函數是在實例化后,執行start啟動函數的時候,會自動執行。在該函數里,實現了循環獲取圖像的內容。利用多線程方式實現視頻流的車牌識別053.定義算法識別線程結合調用算法接口的內容和圖像顯示內容,利用多線程的方式整合起來,循環識別,對攝像頭采集線程中獲取的每一幀圖片進行識別,并顯示,形成視頻流的畫面。init初始化函數實例化該線程的時候,會自動執行初始化函數,在初始化函數里面,定義了顯示內容,并實例化算法和加載模型。run函數該函數是在實例化后,執行start啟動函數的時候,會自動執行。在該函數是一個循環,實現了對采集的每一幀圖片進行算法識別,然后將結果繪畫在圖片上,并將處理后的圖片顯示出來。利用多線程方式實現視頻流的車牌識別05camera_th=CameraThread(0,640,480)plate_detect_th=PlateDetectThread()camera_th.start()plate_detect_th.start()4.啟動和停止線程(1)啟動線程實例化兩個線程,并啟動這兩個線程,實現完整的車牌識別功能,運行時加載模型比較久,需要等待幾秒。plate_detect_th.stop()camera_th.stop()(2)關閉線程為了避免占用資源,結束實驗時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論