成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

畢業(yè)設(shè)計(jì) - 題目:基于stm32的車牌識(shí)別系統(tǒng)設(shè)計(jì)

不知名網(wǎng)友 / 3878人閱讀

摘要:對(duì)于道路交通應(yīng)用到的技術(shù),車牌識(shí)別系統(tǒng)是交通管理的主要技術(shù)。所以車牌識(shí)別系統(tǒng)目前是一個(gè)交通管理必備的技術(shù),因此本文對(duì)車牌識(shí)別系統(tǒng)進(jìn)行了研究與實(shí)現(xiàn)。車流統(tǒng)計(jì)車牌驗(yàn)證和移動(dòng)車載系統(tǒng)車牌識(shí)別系統(tǒng)可以用于對(duì)車輛流量統(tǒng)計(jì)。


1 簡(jiǎn)介

Hi,大家好,這里是丹成學(xué)長(zhǎng),今天向大家介紹一個(gè) 單片機(jī)項(xiàng)目

基于stm32的車牌識(shí)別系統(tǒng)設(shè)計(jì)

大家可用于 課程設(shè)計(jì) 或 畢業(yè)設(shè)計(jì)

技術(shù)解答、畢設(shè)幫助、開題指導(dǎo)print("Q 746876041") 

2 項(xiàng)目課題背景

在我們的日常生活中, 接觸到了很多關(guān)于電子科技的技術(shù)。 在電子科技交通領(lǐng)域中, 有很多技術(shù)都在無形中加入我們的生活, 如圖像處理技術(shù), 自動(dòng)檢測(cè)技術(shù)等。對(duì)于道路交通應(yīng)用到的技術(shù), 車牌識(shí)別系統(tǒng)是交通管理的主要技術(shù)。 一套完整的車牌識(shí)別系統(tǒng), 可以給我們的日常生活帶來規(guī)范, 從而能夠使交通事故更少的發(fā)生,給我們的出行帶來順暢, 給我們的日常生活帶來方便。 所以車牌識(shí)別系統(tǒng)目前是一個(gè)交通管理必備的技術(shù), 因此本文對(duì)車牌識(shí)別系統(tǒng)進(jìn)行了研究與實(shí)現(xiàn)。

3 應(yīng)用場(chǎng)景

車牌識(shí)別系統(tǒng)的應(yīng)用前景很廣泛, 用法也簡(jiǎn)單可靠。 它不但用于道路交通監(jiān)控,而且也用于小區(qū)和停車場(chǎng)方面的管理、 收費(fèi)站管理系統(tǒng)、 車流統(tǒng)計(jì)、 車牌驗(yàn)證和移動(dòng)車載系統(tǒng)等方面。

3.1 小區(qū)和停車場(chǎng)方面的管理

小區(qū)和停車場(chǎng)車牌識(shí)別管理系統(tǒng)是對(duì)出入車輛的監(jiān)控。 進(jìn)出的車輛會(huì)被車牌系統(tǒng)識(shí)別, 并通過網(wǎng)絡(luò)傳輸, 識(shí)別出來的車牌信息發(fā)送到管理系統(tǒng)中登記, 這樣的流程不僅節(jié)省了人力保證了人員的安全, 也節(jié)約了進(jìn)出登記時(shí)間, 大大提升了效率

3.2 交通道路的監(jiān)控

在道路交通的檢測(cè)部門中, 每天都會(huì)出現(xiàn)大量的違規(guī)車輛。 對(duì)于那些列進(jìn)“黑名冊(cè)” 中的車輛, 比如那些肇事過后逃逸的車輛、 那些已經(jīng)掛失過的車輛和那些欠費(fèi)過的汽車等, 我們通??梢詫⑦@些車的車牌用攝像機(jī)錄制成視頻記錄下來。 如果通過人工識(shí)別并比較車牌號(hào)碼, 這樣會(huì)導(dǎo)致工作的效率會(huì)比較低, 而且容易出現(xiàn)錯(cuò)誤; 如果應(yīng)用車牌識(shí)別系統(tǒng), 給定一個(gè)車牌追蹤目標(biāo), 系統(tǒng)就會(huì)對(duì)攝像頭監(jiān)控下的車輛信息進(jìn)行自動(dòng)掃描。 對(duì)于車牌號(hào)碼識(shí)別之后做比較并處理, 如果符合條件就立刻報(bào)警。

3.3 收費(fèi)站管理系統(tǒng)

我國(guó)在 2019 年推出高速公路全面實(shí)行 ETC 交費(fèi), 車輛進(jìn)出收費(fèi)站, 不管是橋梁, 或是高速公路, 隧道等地方, 對(duì)于車牌識(shí)別系統(tǒng)的要求相對(duì)比較嚴(yán)格。 車牌識(shí)別系統(tǒng)可以大大減少平常收費(fèi)系統(tǒng)工作量較大和人工容易產(chǎn)生疲勞等等的不足, 也可以減少勞動(dòng)的強(qiáng)度, 節(jié)省了大量物力和人力。 同時(shí), 對(duì)于 ETC 收費(fèi)系統(tǒng)還能夠節(jié)省司機(jī)的大量開車時(shí)間。 因此在收費(fèi)站, 車牌識(shí)別系統(tǒng)是一種高效率、 高質(zhì)量的東西, 可以提高生活物質(zhì)水平。

3.4 車流統(tǒng)計(jì)、 車牌驗(yàn)證和移動(dòng)車載系統(tǒng)

車牌識(shí)別系統(tǒng)可以用于對(duì)車輛流量統(tǒng)計(jì)。 當(dāng)交通路道處于比較復(fù)雜的路段, 出現(xiàn)塞車或者車輛處于超速狀態(tài)時(shí), 系統(tǒng)會(huì)根據(jù)捕獲到的車輛信息記錄發(fā)送到服務(wù)端,服務(wù)端再發(fā)送到對(duì)應(yīng)車牌車主綁定的客戶端。 所以車牌識(shí)別的問題已經(jīng)成為了交通工程領(lǐng)域中重點(diǎn)研究課題之一。

4 系統(tǒng)設(shè)計(jì)方案

4.1 硬件方案

學(xué)長(zhǎng)設(shè)計(jì)的系統(tǒng)由三個(gè)部分組成: 圖像采集、 處理和顯示裝置。 本文采用基于ARM cortex-m3 內(nèi)核的 STM32F103 芯片作為設(shè)計(jì)平臺(tái), 它具有較高的處理能力, 可以進(jìn)行比較復(fù)雜的計(jì)算, 基本上可以滿足設(shè)計(jì)需要。 圖像采集用 OV7670 攝像頭。而顯示裝置是用 TFT_ILI9341 2.8 寸顯示屏。 系統(tǒng)模塊框圖如圖 所示。

4.2 軟件實(shí)現(xiàn)流程

車牌區(qū)域識(shí)別、 字符分割兩者均采用根據(jù)跳變點(diǎn)劃線的方式來對(duì)字符的邊界以及車牌區(qū)域進(jìn)行確定。 攝像頭采集到圖像后進(jìn)行掃描測(cè)試, 獲取攝像頭像素的值,再根據(jù)屏幕縱向 240 方向跳變點(diǎn)的顯示點(diǎn)數(shù), 分析跳變點(diǎn); 而車牌測(cè)定就根據(jù)屏幕橫向 320 方向跳變點(diǎn)的顯示進(jìn)行分析。 兩個(gè)方向分析完畢后, 就會(huì)對(duì)字符進(jìn)行分割,分割后就可以進(jìn)行字符的識(shí)別。

5 硬件系統(tǒng)設(shè)計(jì)

5.1 主控STM32

STM32 核心板的 5V 引腳接著供電引腳, 系統(tǒng)的供電為 DC5V。 通過穩(wěn)壓芯片,在 STM32 核心板上將 5V 的供電電壓轉(zhuǎn)換為 3.3V 電壓。 3.3V 電壓在 STM32 核心板的引腳輸出。 3.3V 作為供電電壓被 STM32 芯片、 OV7670 攝像頭和 TFT 液晶屏幕引用。

5.2 攝像頭

在系統(tǒng)適配度、 性能和性價(jià)比上經(jīng)過對(duì)比后, 系統(tǒng)采用 OV7670攝像頭。 OV7670攝像頭功耗低, 可以與本系統(tǒng)的其他硬件搭配; 在性能上, 攝像頭自帶影像處理器和具備 VGA 攝像頭的操作功能。 并且具備的傳感器技術(shù), 是攝像頭的亮點(diǎn), 它可以完善甚至可以完全修復(fù)如托尾、 浮散等光學(xué)以及電子缺陷。

5.3 顯示屏

學(xué)長(zhǎng)要想將采集到的車牌圖像信息以及識(shí)別結(jié)果得以顯示, 系統(tǒng)就必須有顯示部分。系統(tǒng)的使用 2. 8 寸的 TFT 顯示屏作為顯示模塊。 顯示屏默認(rèn) 8 位的數(shù)據(jù)長(zhǎng)度, 同時(shí)它支持 16 位長(zhǎng)度的數(shù)據(jù), 只要將一個(gè) 0 歐電阻連接在 R11 引腳, 就可以使用 16位。 顯示屏還支持 240*320 像素的 RGB565 格式。

6 軟件設(shè)計(jì)

車牌識(shí)別主要通過將采集到的數(shù)據(jù)進(jìn)行拍照定位、字符分割及識(shí)別等技術(shù)得到,具體流程圖如圖。

6.1 車牌定位

首先對(duì)采集到的圖像進(jìn)行大范圍搜索,找到符合的區(qū)域座位后選取,然后對(duì)其進(jìn)行進(jìn)一步判斷,最終選定最佳的區(qū)域分隔出來,具體流程如圖。

車牌區(qū)域出現(xiàn)了約 15 個(gè)以上的跳變點(diǎn), 是通過二值化分析后呈現(xiàn)出來的。 根據(jù)跳變點(diǎn)的波動(dòng)分析, 可以確定車牌區(qū)域的位置。

關(guān)鍵代碼

void ChangePoint_Show_240() ; //240 方向跳變點(diǎn)顯示{for(a=0; a<240; a++) { //顯示對(duì)應(yīng)的橫向跳變點(diǎn)//跳變點(diǎn)顯示, 紅色標(biāo)記LCD_DrawPoint(TableChangePoint_240[a], a, 0xf800) ;//跳變點(diǎn)個(gè)數(shù)(閾值) 設(shè)定if(TableChangePoint_240[a]>=15) {//顯示達(dá)到閾值標(biāo)準(zhǔn)的點(diǎn)for(b=35; b<40; b++) {LCD_DrawPoint(b, a, 0x6666) ; //Green}}16}}for(a=0; a<240; a++) { //建立參考線 10、 20、 30LCD_DrawPoint(a, Min_ChangePoint_240, 0x001f) ;LCD_DrawPoint(10, a, 0x63<<5) ; //10LCD_DrawPoint(20, a, 0x63<<5) ; //20LCD_DrawPoint(30, a, 0x63<<5) ; //30}void ChangePoint_Analysis_240() { //240 跳變點(diǎn)分析Min_ChangePoint_240=240;Max_ChangePoint_240=0;for(a=0; a<240; a++) //240 掃描, 獲取上下限值:Min_ChangePoint_240,Max_ChangePoint_240{while(TableChangePoint_240[a]<=15) //閾值調(diào)節(jié){a++;}Min_ChangePoint_240=a;while(TableChangePoint_240[a]>15) //閾值調(diào)節(jié){a++;}Max_ChangePoint_240=a;if(Max_ChangePoint_240-Min_ChangePoint_240>=15){a=240; //連續(xù)性}//向上微調(diào) 3 像素Min_ChangePoint_240=Min_ChangePoint_240-3;//向下微調(diào) 2 像素Max_ChangePoint_240=Max_ChangePoint_240+2;for(a=30; a<280; a++) //顯示上界限{LCD_DrawPoint(a, Max_ChangePoint_240, 0x001f) ;}for(a=30; a<280; a++) //顯示下界限{//顯示 50, 參考 50 像素位置處, 車牌位置不要超過這根線, 免得不能字符的歸一化處理for(a=30; a<280; a++){LCD_DrawPoint(a, Min_ChangePoint_240+50, 0xf800) ;}flag_MaxMinCompare=1;//判斷合法性 1: 最小值>最大值if(Min_ChangePoint_240>Max_ChangePoint_240){flag_MaxMinCompare=0;}//判斷合法性 2:if(Min_ChangePoint_240==240| | Max_ChangePoint_240==0){flag_MaxMinCompare=0;}//判斷合法性 3:if(Max_ChangePoint_240-Min_ChangePoint_240<15){flag_MaxMinCompare=0;}}

6.2 字符分割

對(duì)檢測(cè)得到的車牌進(jìn)行切割,從而達(dá)到將每一位字符分隔開并為下一步做鋪墊。具體流程如圖。

車牌的整體長(zhǎng)度為 44cm, 寬度為 14cm。 不計(jì)第 2、 3 個(gè)字符中間的小圓點(diǎn), 車牌上共有 7 個(gè)字符, 均為規(guī)則的印刷體字。 除了軍車、 警車、 教練車、 領(lǐng)事館車外,標(biāo)準(zhǔn)的民用車輛牌照均為 7 個(gè)字符。

車牌首位為省名簡(jiǎn)稱, 是一個(gè)漢字, 如粵、 蘇、 遼等。 次位為英文字母, 接下來為英文字母或阿拉伯?dāng)?shù)字。 其中每個(gè)字符統(tǒng)一寬度為 4. 5cm, 高 9cm, 第二、 三個(gè)字符間間距為 3.4cm, 中間小圓點(diǎn) 1cm 寬, 小圓點(diǎn)與第 2、 3 個(gè)字符間間距分別為1.2cm, 其余字符間間距為 1.2cm。

如果分析后根據(jù)邊沿, 里面的字符數(shù)為整個(gè)車牌, 也就是 8 個(gè)完整的字符, 則會(huì)更加精確切割出每個(gè)字符位置。 在處理過程中, 獲取每個(gè)字符的左邊界 KL 和右邊界 K R 。 如下圖所示, 垂直藍(lán)線是每個(gè)文字的邊界標(biāo)記。 字符分割, 為下一個(gè)字符匹配準(zhǔn)備通用參數(shù)。

6.3 字符識(shí)別

字符分割后, 進(jìn)行歸一化處理, 逐個(gè)字符進(jìn)行匹配。 程序中的字符模板由模板提取軟件提取, 模板大小為 24*50 的單一像素。 逐個(gè)字符進(jìn)行匹配, 以相似度值最大的對(duì)應(yīng)字符作為輸出結(jié)果并顯示。

關(guān)鍵代碼

Stm32_Clock_Init(16) ; //初始化時(shí)鐘Data_LCD_ColorChange() ; //車牌測(cè)定u8 MoShiShiBie_All(u8 begin, u8 end) //字符匹配, 模式識(shí)別, 選擇性匹配{u16 Compare_num, num_save;u8 a, b, e, a_save, st1, st2, s1, s2;int num1;for(a=begin; a<end; a++)//36{num1=0;for(b=0; b<150; b++){st1=table_picture[b];st2=Table[150*a+b];for(e=0; e<8; e++){s1=st1&(1<<e) ;s2=st2&(1<<e) ;if(s1==s2) num1++;}}}}

7 實(shí)物測(cè)試

顯示屏?xí)@示實(shí)時(shí)的步驟。 通電后, 屏幕首先會(huì)初始化, 會(huì)出現(xiàn)綠色和紅色兩個(gè)界面; 第二會(huì)根據(jù)傳輸?shù)狡聊簧蠄D像, 顯示屏有 20 秒的處理時(shí)間進(jìn)行二值化分析出車牌區(qū)域; 第三, 顯示屏圖像靜止, 對(duì)車牌進(jìn)行切割處理; 第四把每個(gè)切割后的字符與取模的標(biāo)準(zhǔn)車牌模型進(jìn)行比較, 把相似度最高的字符輸出; 最后把車牌結(jié)果輸出到結(jié)果界面。


外場(chǎng)測(cè)試

8 部分關(guān)鍵代碼

#include "system.h"#include "SysTick.h"#include "led.h"#include "usart.h"#include "tftlcd.h"#include "key.h"#include "malloc.h" #include "sd.h"#include "flash.h"#include "ff.h" #include "fatfs_app.h"#include "exti.h"#include "time.h"  #include "ov7670.h"#include "bmp.h"#include "esp8266_drive.h"extern u8 ov_sta;	//在exit.c里面定義extern u8 ov_frame;	//在time.c里面定義//更新LCD顯示void camera_refresh(void){	u32 i,j; 	u16 color;		if(ov_sta)//有幀中斷更新	{		LCD_Display_Dir(1);				LCD_Set_Window(0,(tftlcd_data.height-240)/2,320-1,240-1);//將顯示區(qū)域設(shè)置到屏幕中央		OV7670_RRST=0;				//開始復(fù)位讀指針 		OV7670_RCK_L;					//設(shè)置讀數(shù)據(jù)時(shí)鐘為低電平			OV7670_RCK_H;		OV7670_RCK_L;		OV7670_RRST=1;				//復(fù)位讀指針結(jié)束 		OV7670_RCK_H;				for(j=76800;j>0;j--)//較快方式		{			OV7670_RCK_L;			color=GPIOF->IDR&0XFF;	//讀數(shù)據(jù)			OV7670_RCK_H; 			color<<=8;  			OV7670_RCK_L;			color|=GPIOF->IDR&0XFF;	//讀數(shù)據(jù)			OV7670_RCK_H; 						LCD_WriteData_Color(color);	//顯示圖片					}	}					ov_sta=0;					//清零幀中斷標(biāo)記			ov_frame++; 			LCD_Display_Dir(0);}int main(){	u8 i=0;	u8 sbuf[15];	u8 count;	u8 res;	u8 sd_ok;	u8 *pname;				//帶路徑的文件名 	u8 key;	u8 *lp;  //存儲(chǔ)車牌		SysTick_Init(72);	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中斷優(yōu)先級(jí)分組 分2組	LED_Init();	USART1_Init(9600);		ESP8266_Init(115200);	ESP8266_STA_LinkAP();		TFTLCD_Init();			//LCD初始化	KEY_Init();		EN25QXX_Init();				//初始化EN25Q128	  	my_mem_init(SRAMIN);		//初始化內(nèi)部?jī)?nèi)存池		while(OV7670_Init())//初始化OV7670	{		LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,24,"OV7670 ERROR!");		delay_ms(200);		LCD_Fill(10,10,239,206,WHITE);		delay_ms(200);	} 	LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,24,"OV7670 OK!");	delay_ms(1500);		  		while(FATFS_Init()){		LCD_ShowString(10,40,tftlcd_data.width,tftlcd_data.height,24,"FATFS ERROR!");		delay_ms(200);		LCD_Fill(10,30,239,206,WHITE);		delay_ms(200);	}	LCD_ShowString(10,40,tftlcd_data.width,tftlcd_data.height,24,"FATFS OK!");	delay_ms(1500);		//掛載SD卡	//創(chuàng)建PHOTO文件夾	do{		f_mount(fs[0],"0:",1);		res=f_mkdir("0:/PHOTO");		if(res!=FR_EXIST&&res!=FR_OK) 	//發(fā)生了錯(cuò)誤		{		    			LCD_ShowString(10,70,tftlcd_data.width,tftlcd_data.height,24,"SD ERROR!");			delay_ms(200);				  			LCD_ShowString(10,100,tftlcd_data.width,tftlcd_data.height,24,"PHOTO ERROR!");			sd_ok=0;  			}else		{			LCD_ShowString(10,70,tftlcd_data.width,tftlcd_data.height,24,"PHOTO OK!");			delay_ms(200);				  			LCD_ShowString(10,100,tftlcd_data.width,tftlcd_data.height,24,"KEY_UP TAKE PHOTO!");			LCD_ShowString(10,130,tftlcd_data.width,tftlcd_data.height,24,"KEY_DOWN LPR!");			sd_ok=1;  	  		}		}while(sd_ok!=1);		pname=mymalloc(SRAMIN,30);	//為帶路徑的文件名分配30個(gè)字節(jié)的內(nèi)存		     	while(pname==NULL)			//內(nèi)存分配出錯(cuò) 	{	    		LCD_ShowString(10,130,tftlcd_data.width,tftlcd_data.height,24,"MEMORY ERROR!");		delay_ms(200);				  		LCD_Fill(10,30,239,206,WHITE);    		delay_ms(200);				  	}		OV7670_Light_Mode(0);	OV7670_Color_Saturation(2);	OV7670_Brightness(2);	OV7670_Contrast(2); 	OV7670_Special_Effects(0);			TIM4_Init(10000,7199);			//10Khz計(jì)數(shù)頻率,1秒鐘中斷									  	EXTI7_Init();				OV7670_Window_Set(12,176,240,320);	//設(shè)置窗口	  OV7670_CS=0;		LCD_Clear(WHITE);		while(1)	{		camera_refresh();		key=KEY_Scan(0);		if(key==KEY_UP)		{			if(sd_ok)			{				camera_new_pathname(pname);//得到文件名		    				if(bmp_encode(pname,0,0,240,320,0))				{					LCD_ShowString(10,330,tftlcd_data.width,tftlcd_data.height,24,"TAKE PHOTO ERROR!");		 				}else 				{					LCD_ShowString(10,330,tftlcd_data.width,tftlcd_data.height,24,"TAKE PHOTO OK!");			 		}			}			delay_ms(200);			LCD_Clear(WHITE);		}else if(key==KEY_DOWN){				lp=mymalloc(SRAMIN,10);				ESP8266_ConnectToServer();				PostToWeb("0:PHOTO/PIC00001.bmp",lp);				printf("%s",lp);				LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,24,"OK!");				LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,24,lp);		}		else if(key==KEY_RIGHT)
                 
               
              

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/125590.html

相關(guān)文章

  • 畢業(yè)設(shè)計(jì) - 題目基于 stm32 病房呼叫系統(tǒng)

    摘要:目前病房呼叫系統(tǒng)主要有兩種一種是有線式一種是無線式。而在我國(guó),大多數(shù)醫(yī)院都是采用的傳統(tǒng)的有線式病房呼叫系統(tǒng)。主程序設(shè)計(jì)病房呼叫系統(tǒng)程序設(shè)計(jì)使用的是本身的固件庫。 ...

    luffyZh 評(píng)論0 收藏0
  • 基于單片機(jī)智能家居控制系統(tǒng)

    摘要:中控部分采用了單片機(jī),其主要作用是獲取輸入部分?jǐn)?shù)據(jù),經(jīng)過內(nèi)部處理,控制輸出部分。 設(shè)計(jì)簡(jiǎn)介: 本設(shè)計(jì)是基于單片機(jī)的智能家居控制系統(tǒng),主要實(shí)現(xiàn)以下功能: 可通過DS18B20實(shí)時(shí)測(cè)量環(huán)境溫度溫度具有上下限,自動(dòng)模式下溫度超出限值,GMS發(fā)送短信溫度上下限通過手機(jī)藍(lán)牙設(shè)置系統(tǒng)可通過手機(jī)藍(lán)牙、紅外...

    zacklee 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<