1905基于STM32的车牌识别控制系统设计(文档、视频、源码、原理图)【毕设课设】

 

一、项目背景与意义

随着智能交通系统的快速发展,车牌识别技术作为其中的关键技术之一,在车辆管理、交通监控等领域发挥着重要作用。本设计旨在利用STM32单片机作为主控,结合OV7670摄像头进行图像采集,实现车牌的自动识别与控制,为智能交通系统提供高效、准确的车牌识别解决方案。

二、系统总体设计

本系统主要由STM32F103RBT单片机、OV7670摄像头(带FIFO)、TFT显示屏等模块组成。STM32单片机负责控制摄像头的图像采集,并对采集到的图像进行模式识别、匹配等处理,最终获得车牌的识别结果。为了提高处理速度,STM32单片机进行了16倍频操作。

三、硬件设计

  1. STM32F103RBT单片机:作为系统的主控芯片,负责控制摄像头的图像采集、图像处理以及结果的输出。

  2. OV7670摄像头:用于采集车牌图像,具有带FIFO的特点,能够提高数据传输的稳定性。

  3. TFT显示屏:用于显示采集到的原始图像以及处理后的车牌识别结果。

  4. 其他外围电路:包括电源电路、复位电路、时钟电路等,确保系统的稳定运行。

四、软件设计

  1. 图像采集:通过STM32单片机控制OV7670摄像头进行图像采集,设置采集的图像大小为320*240像素,像素格式为RGB565。

  2. 图像处理:对采集到的图像进行二值化分析,识别出车牌区域;接着对车牌区域进行字符分割,将车牌字符分离出来;最后通过字符匹配算法,对分离出的字符进行识别。

  3. 结果输出:将识别结果通过TFT显示屏进行显示,方便用户查看。

五、关键问题及解决方案

  1. 图像采集稳定性问题:由于环境光照、摄像头抖动等因素可能导致图像采集不稳定。通过优化摄像头驱动程序,增加图像采集的稳定性和准确性。

  2. 车牌识别准确率问题:车牌识别过程中,可能受到车牌污损、字体差异等因素的影响,导致识别准确率不高。通过改进字符分割和匹配算法,提高车牌识别的准确率。

  3. 处理速度问题:由于车牌识别涉及大量的图像处理和模式识别操作,可能导致处理速度较慢。通过优化算法、减少不必要的计算以及提高STM32单片机的时钟频率,加快处理速度。

六、测试与验证

经过实际测试,本系统能够稳定地采集车牌图像,并准确地识别出车牌号码。在多种不同场景下,系统的识别准确率均达到较高水平。同时,系统的处理速度也得到了显著提升,能够满足实际应用的需求。

七、总结与展望

本设计成功实现了基于STM32的车牌识别控制系统,具有较高的实用性和应用价值。未来,可以考虑进一步优化算法、提高识别准确率和处理速度;同时,也可以探索将系统与其他智能交通系统相结合,实现更广泛的应用。

#include "cfg.h"

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
u8 cur_status;
u8 LED_flag;
u32 a;
u32 b;
u16 AA,BB;
u16 color;
u16 color_save;//保存一个像素的值
u8 R,G,B;//颜色分量
u8 TableChangePoint_240[240];//跳变点240个
u8 Max_ChangePoint_240,Min_ChangePoint_240,Max_bChangePoint,Min_bChangePoint;//跳变点纵轴始、末坐标,跳变点横轴始、末坐标
u8 a_Continue,b_Continue;//记录纵、横轴突变点的连续性
u8 flag_aMax;//末值更新标志
u8 Max_aChangePoint_reset,Min_aChangePoint_reset;//修正后的上下限
u16 Length_card,Width_card;//车牌的长和宽
u8 Max_aChangePoint_reset_1,Min_aChangePoint_reset_1;//保存上次的数据
u8 flag_MaxMinCompare;//Max_aChangePoint_reset_1和Max_aChangePoint_reset的标志
u8 TableChangePoint_320[320];//纵向跳变点320个
float V,S,H;//定义HSV值
u16 Min_blue;
u16 Max_blue;//定义车牌蓝色区域的横向最大值和最小值
u16 k1,kk1,k2,kk2,k3,kk3,k4,kk4,k5,kk5,k6,kk6,k7,kk7,k8,kk8;//八个字符边界
extern u8 Table[6300];//所有字符集 (10+26)*150 = 5400 字节
extern u8 talble_0[150];//字符3,测试用
extern u8 table_yu[32];//渝字
extern u8 table_min[32];//闽字
extern u8 table_lu[32];//鲁字
extern u8 table_zhe[32];//浙字
extern u8 table_shan[32];//陕字
extern u8 table_cuan[32];//川字
u8 R_a,G_a,B_a;//阈值

u8 table_picture[150];//定义保存图片的数组
u8 table_char[36]={0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',};
u8 table_char_char[36]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',};
	u8 table_card[5][8]={	//保存5个车牌的二维数组
{0,0,0,0,0,0,0,0},		//最后一位保存时间
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
};
u8 tim3_num;//TIM3分钟计时

u8 table_cardMeasure[7];//测量的车牌结果
void Show_Card(u8 i);//显示第几组车牌
void Show_Title();//显示标题

void MYRCC_DeInit(void)//复位并配置向量表
{										 
	NVIC_InitTypeDef NVIC_InitStructure;	
	RCC->APB1RSTR = 0x00000000;//复位结束			 
	RCC->APB2RSTR = 0x00000000; 
	  
	RCC->AHBENR = 0x00000014;  //睡眠模式闪存和SRAM时钟使能.其他关闭.	  
	RCC->APB2ENR = 0x00000000; //外设时钟关闭.			   
	RCC->APB1ENR = 0x00000000;   
	RCC->CR |= 0x00000001;     //使能内部高速时钟HSION	 															 
	RCC->CFGR &= 0xF8FF0000;   //复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]					 
	RCC->CR &= 0xFEF6FFFF;     //复位HSEON,CSSON,PLLON
	RCC->CR &= 0xFFFBFFFF;     //复位HSEBYP	   	  
	RCC->CFGR &= 0xFF80FFFF;   //复位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE 
	RCC->CIR = 0x00000000;     //关闭所有中断
	/* Enable the TIM3 global Interrupt */
	NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
	NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
}
部分代码。。

 

 

资料下载地址:

https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值