基于图像处理的智能交通灯控制系统

目 录
引言 1
1课题背景 2
1.1概述 2
1.2传统交通路口信号灯 3
1.3基于图像处理的交通灯控制智能系统 3
1.3.1国内研究现状 3
1.3.2国外研究现状 4
1.3.3目前主流方式 4
1.4课题任务分析 5
2开发环境和相关技术介绍 7
2.1视觉检测 7
2.1.1树莓派 7
2.1.2OpenCV 9
2.1.3USB 摄像头 10
2.2硬件控制技术 11
2.2.1 STM32 11
2.2.2 74HC595 数码管模块 13
2.2.3 信号灯 14
3需求分析 15
3.1可行性分析 15
3.1.1技术可行性分析 15
3.1.2经济可行性分析 15
3.1.3社会可行性分析 16
3.2功能性需求 16
3.2.1 概述 16
3.2.2交通灯控制 17
3.2.3图像采集 17

3.2.4图像处理算法 17
3.2.5分析通过路口的需求 17
3.3非功能性需求 18
3.3.1环境需求 18
3.3.2系统完善需求 18
4概要设计 19
4.1总体设计 19
4.1.1 概述 19
4.1.2交通灯控制 19
4.1.3图像采集 20
4.1.4图像处理 21
4.1.5需求分析 22
5详细设计 23
5.1系统硬件控制设计 23
5.1.1交通信号灯 23
5.1.2紧急情况的中断 23
5.1.3串口通信 24
5.2视觉算法设计 24
5.2.1图像采集 24
5.2.2图像处理 25
5.2.3数据统计与分析 27
6系统测试 29
6.1硬件模块测试 29
6.1.1正常情况下 29
6.1.2紧急情况下 31
6.1.3改变路口车流量 32
6.2动态识别模块测试 35
7总结与展望 36
7.1 总结 36
7.2 成果 37
7.3 展望 38
参考文献 38
国内在交通视频检测领域的水平跟国外还有一段差距,但作为一个热门研究方向,随着投入的越来越多,在稳步快速的发展和趋于完善。
1.4课题任务分析

本课题是针对于这一问题现状,本文主要介绍了一种低成本、易安装、简洁的基于视觉的智能交通灯的设计和实现方法。该智能交通灯以硬件控制和图像处理为核心, 能够脱离 PC 机运行,不用铺设通讯线路。该系统能独立的、实时的检测出交通路口交通流信息,并依据车辆滞留情况智能的进行交通灯配时。本文设计的基于视觉的智能交通灯系统具有小型化、低成本、低功耗、易于安装维护等一系列优点。
具体完成以下任务: 硬件部分:
1、南北方向车道和东西方向车道两条交叉道路上的车辆交替运行,每次通行时间都设为 23 秒,然后红灯时间为 20 秒,时间可设置修改。
2、在绿灯转为红灯时,要求黄灯先亮 3 秒钟,才能变换运行车道;
3、能够根据树莓派传输的信息进行红绿灯时间调控,主要分为以下几种情况:
(1)某一方向上的车辆比另一方向的多,能够在下一个红绿灯周期减少该方向上红灯时间,增加绿灯时间。
(2)某一方向上有车,另一方向无车,能够直接把有车方向的交通灯变为绿灯让车辆通行,另一方向直接变成红灯。
4、东西方向、南北方向车道除了有红、黄、绿灯指示外,采用数码管进行显示
(采用计时的方法)。
5、一道有特种车辆(实验时用开关 K1 和 K2 控制),交通灯控制系统能立即让该方向放行,无特种车方向禁止通行。
6、在出现紧急情况(实验中用开关 K3 控制)时可由交警动手实现全路口车辆禁行状态(即所有方向均为红灯)。
图像处理:
1、能够静态识别车辆(采用模型小车替代真实车辆),统计两个方向的车辆数目并根据不同情况发送不同代码给 STM32。
2、能够统计实际道路视频中的车辆数目,实现动态识别。
通信:
1、实现 STM32 与树莓派的串口通信
2、树莓派能够发送相应的信息给 STM32,STM32 能够反馈信息确保接收到。
1.5论文结构

本篇论文结构,详细说明如下。
摘要(Abstract):对本论文全文内容的提要。
引言:描述本课题总体思想,提纲振领,总揽全局。
第一章 课题背景:着重说明了研究背景,项目意义、国内外的研究现状以及本文的一个行文结构
第二章 开发环境和相关技术介绍:分别从视觉处理和硬件设计说明。第三章 需求分析:着重从可行性,功能性等方面展开讨论。
第四章 概要设计:在需求分析的基础上,将其转化为系统原型第五章 详细设计:全面细致的讲述整个项目的具体实现方法。
第六章 系统测试:本章对系统展开进行测试,能否与本课题需要实现的任务契合。第七章 总结与展望:对本课题的一些总结与收获,并对未来该项目的展望 。
参考文献。

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"

 
/************************************************
 ALIENTEK精英STM32开发板实验8
 定时器中断实验  
 技术支持:www.openedv.com
 淘宝店铺:http://eboard.taobao.com 
 关注微信公众平台微信号:"正点原子",免费获取STM32资料。
 广州市星翼电子科技有限公司  
 作者:正点原子 @ALIENTEK
************************************************/
u8 Tab[] = {0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,
							0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0x7f};//0 1 2 3 4 5 6 7 8 9 A B C D F 灭 . //  共阳数码管


//u16 s1=9;
u16 h1=23;
u16 h2=23;
u16 l1=20;
u16 l2=20;
u16 y1=3;
u16 y2=3;
u16 v=0;					
							
 int main(void)
 {		
	u16 shijian=0;
	u16 h11=23;
	u16 h22=23;
	u16 l11=20;
	u16 l22=20;
	u16 i,j,m,n;
	u16 t;
	u16 len;	
	u16 len1;
	u16 times=0;
	u8 kkk[200];
	kkk[0]='a';
	kkk[1]='s';
	kkk[2]='d';
	len1=strlen(kkk);
	delay_init();	    	 //延时函数初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(115200);	 //串口初始化为115200
 	LED_Init();			     //LED端口初始化
	EXTIX_Init();         	//初始化外部中断输入 
	TIM3_Int_Init(4999,14399);//10Khz的计数频率,计数到5000为500ms  
  while(1)
	{
//	 GPIO_SetBits(GPIOA,GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_8);
//	 GPIO_SetBits(GPIOA,GPIO_Pin_1 |  GPIO_Pin_4);
//   GPIO_SetBits(GPIOB,GPIO_Pin_0);
//		GPIO_SetBits(GPIOF,GPIO_Pin_4);
//		GPIO_SetBits(GPIOB,GPIO_Pin_1);
//		GPIO_SetBits(GPIOF,GPIO_Pin_6);
//		GPIO_SetBits(GPIOF,GPIO_Pin_7);
		
		if (USART_RX_STA&0x8000)
		{
			times=0;
			len = USART_RX_STA&0x3FFF;
			for (t=0;t<len1;t++)
			{
				USART_SendData(USART1,kkk[t]);
				//USART_SendData(USART1, USART_RX_BUF[t]);//???1????
				while (USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
			}
			USART_RX_STA=0;
		}
		
//421235790134756903476907134906//
		if('n'==USART_RX_BUF[1]&&times==0)
		{
			times=1;
			h11=18;
			l11=25;
			h22=28;
			l22=15;
			shijian=1;
			GPIO_SetBits(GPIOE,GPIO_Pin_5);
			GPIO_ResetBits(GPIOB,GPIO_Pin_5);
		}
		if('n'==USART_RX_BUF[2]&&times==0)
		{
			times=1;
			h11=28;
			l11=15;
			h22=18;
			l22=25;
			shijian=1;
		}
		if('n'==USART_RX_BUF[3]&&times==0)
		{
			times=1;
			h1=23;
			h2=23;
			l1=20;
			l2=20;
			y1=3;
			y2=3;
			v=2;
		}
		if('n'==USART_RX_BUF[4]&&times==0)
		{
			times=1;
			h1=23;
			h2=23;
			l1=20;
			l2=20;
			y1=3;
			y2=3;
			v=0;
		}
		
//1233124123512351351351345135151334535134//
		 if(v==0)
		{
			
			i=h1%10;
			j=h1/10;
			SPI_596(Tab[i]);
			SPI_596(Tab[j]);
			load2();
			
			m=l2%10;
			n=l2/10;
			SPI_595(Tab[m]);
	    SPI_595(Tab[n]);
	    load();
			if(l2==0)
			{
				l2=20;
				v=1;
			}
		}
		if(v==1)
		{
			i=h1%10;
			j=h1/10;
			SPI_596(Tab[i]);
			SPI_596(Tab[j]);
			load2();
			
			m=y2%10;
			n=y2/10;
			SPI_595(Tab[m]);
	    SPI_595(Tab[n]);
	    load();
			if(h1==0)
			{
				h1=23;
				y2=3;
				v=2;
			}
		}
		
		if(v==2)
		{
			i=l1%10;
			j=l1/10;
			SPI_596(Tab[i]);
			SPI_596(Tab[j]);
			load2();
			
			m=h2%10;
			n=h2/10;
			SPI_595(Tab[m]);
	    SPI_595(Tab[n]);
	    load();
			if(l1==0)
			{
				l1=20;
				v=3;
			}
		}
		
	  if(v==3)
		{
			i=y1%10;
			j=y1/10;
			SPI_596(Tab[i]);
			SPI_596(Tab[j]);
			load2();
			
			m=h2%10;
			n=h2/10;
			SPI_595(Tab[m]);
	    SPI_595(Tab[n]);
	    load();
			
			if(h2==0&&shijian==0)
			{
				h1=23;
				h2=23;
				l1=20;
				l2=20;
				y1=3;
				y2=3;
				v=0;
			}
			else if(h2==0&&shijian==1)
			{
				h1=h11;
				h2=h22;
				l1=l11;
				l2=l22;
				y1=3;
				y2=3;
				v=0;
				shijian=0;
			}
		}
		
		if(v==4)
		{
			SPI_596(Tab[9]);
			SPI_596(Tab[9]);
			load2();
			
			SPI_595(Tab[9]);
	    SPI_595(Tab[9]);
	    load();
			h1=23;
			h2=23;
      l1=20;
      l2=20;
      y1=3;
      y2=3;
		}
		
		if(v==5)
		{
			SPI_596(Tab[9]);
			SPI_596(Tab[9]);
			load2();
			
			SPI_595(Tab[9]);
	    SPI_595(Tab[9]);
	    load();
			h1=23;
			h2=23;
      l1=20;
      l2=20;
      y1=3;
      y2=3;
		}
		
		if(v==6)
		{
			SPI_596(Tab[9]);
			SPI_596(Tab[9]);
			load2();
			
			SPI_595(Tab[9]);
	    SPI_595(Tab[9]);
	    load();
			h1=23;
			h2=23;
      l1=20;
      l2=20;
      y1=3;
      y2=3;
		}
		
	}
}	 
 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值