毕业设计之 -- 基于单片机的人脸识别追踪

Posted DC-STDIO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了毕业设计之 -- 基于单片机的人脸识别追踪相关的知识,希望对你有一定的参考价值。


1 简介

Hi,大家好,这里是丹成学长,今天向大家介绍一个学长做的单片机项目

基于单片机的人脸识别追踪

大家可用于 课程设计 或 毕业设计

技术解答
毕设帮助:<Q>746876041

2 项目简介

传统图像监控设备功能非常单一,仅有图像的采集与显示功能,已经不能满足现代技术要求。

本项目尝试物联网概念结合,不仅实现了包含传统的录像功能,还实现了如今同样很火暴的技术——人脸识别。

本项目的优点:

通过WIFI传输数据,只要哪里有电源插座,便可作为视频监控点。

通过WIFI传输,可远程操作摄像头运行模式(运行、停止、低功耗),实时性增强。

结合上位机人脸识别,自动记录、拍照人脸画面,不再需要像传统设备快进来查找出现人脸画面,追踪更加方便。

2 主要器件

  • 开发板: NUCLEO-64 STM32F446

  • 主控MCU:STM32F446RET6

功能特点:带有数字摄像头DCMI接口,不需要FIFO可直接连接并口摄像头。具有片内128KB的SRAM,存储空间大。

  • WIFI模块:3080B

功能特点:具有STATION和AP功能,提供TCP SOCKET通信,能通过UART直接换TCP通信,非常方便。

  • 摄像头:OV2640 200万像素

功能特点:提供多种分辨率选择,对于一帧QVGA图像(分辨率320*240)的RGB565所需的153600字节的空间,这对于该主控的SRAM来说,空间是不足够,而OV2640自带JPEG压缩技术,一帧QVGA图像经过JPEG压缩后不到10KB,极大节省SRAM存储空间。

  • 摄像头转接板:

功能特点:连接开发板与摄像头,减少传输干扰导致的图像数据丢失。

主控引脚连接图:

3 硬件效果

4 软件设计

4.1 功能架构


开发平台采用:由于MBED平台暂时不支持摄像头接口,所以先暂时使用ST官方的HAL库,在完成所有功能实现后,将移植到MBED平台。

开发工具:keil 5.17

上位机开发: .C++ 与QT5.1,视觉库opencv

开发工具:visual stdio 2017

下位机软件驱动:

串口UART驱动:与WIFI模块3080B采用UART通信。

I2C驱动:对摄像头进行初始化设置。

DCMI驱动:设置从摄像头采集图像接口。

MCO1驱动:给摄像头模块提供时钟。

4.2 软件程序流程图

5 部分实现代码

下位机:

系统上电后,串口和摄像头进行初始化,进入拍照等待。

通过串口接收回调接收上位机发送过来的拍照指令,调用DCMI接口进行拍照。

通过DCMI的帧完成回调函数可知道图像采集完成,发送图像回上位机。

下位机核心逻辑代码:

while (1)
  {
  /* USER CODE END WHILE */
		if(takePhoto==1){
		  takePhoto=0;
			if(Rxbuffer[0]==0x12 &&Rxbuffer[1]==0x34){
				Rxbuffer[0]=0; 
				Rxbuffer[1]=0;
				//__HAL_DCMI_ENABLE(&DCMI_hdcmi);
				__HAL_DCMI_ENABLE_IT(&DCMI_hdcmi, DCMI_IT_FRAME);   //每次接收完一帧都需要重新使能捕捉FRAME中断
				while(HAL_DCMI_Start_DMA(&DCMI_hdcmi, DCMI_MODE_SNAPSHOT,(uint32_t)JpegBuffer, pictureBufferLength)!=HAL_OK);//开启捕捉图像
			}
			HAL_UART_Receive_IT(&UartHandle, (uint8_t *)Rxbuffer, 2);
		}
		if(getPicture==1){
			uint8_t dataHead[8]={'J','P','E','G'};
			pictureLength=pictureBufferLength-DCMI_hdcmi.DMA_Handle->Instance->NDTR;//这个NDTR存放了JPEG的长度
			pictureLength*=4;  //因为DCMI的FIFO是4字节,DMA也是满4字节传输一次,所以图像实际长度=传输次数*4;
			getPicture=0;
			(*(uint32_t*)(dataHead+4))=(uint32_t)pictureLength;   //data是8字节,前4字节用来放"JPEG",后4字节用来存放图像实际长度
			while(HAL_UART_Transmit_IT(&UartHandle, (uint8_t*)dataHead, 8)!=HAL_OK);  //先发送数据长度给上位机
			HAL_Delay(20);
			while(HAL_UART_Transmit_IT(&UartHandle, (uint8_t*)JpegBuffer, pictureLength)!=HAL_OK);//再发送数据给上位机

		}
  /* USER CODE BEGIN 3 */

  }

6 演示效果

图片采集与人脸追踪效果:

图片采集与人脸追踪效果:

6 最后

技术解答
毕设帮助:<Q>746876041

单片机毕设项目大全:
https://blog.csdn.net/huawei123444/article/details/119822845

以上是关于毕业设计之 -- 基于单片机的人脸识别追踪的主要内容,如果未能解决你的问题,请参考以下文章

Java AI 实现人工智能- 我在Github上发现的-基于Java的计算机视觉 Java实现人脸识别(开源代码-(人脸识别-自动驾驶-汽车追踪-手写数字识别器))带你导入代码并测试使用

Java AI 实现人工智能- 我在Github上发现的-基于Java的计算机视觉 Java实现人脸识别(开源代码-(人脸识别-自动驾驶-汽车追踪-手写数字识别器))带你导入代码并测试使用

V1.1基于树莓派的OpenCV-Python摄像头人脸追踪系统(更新系统含演示视频)

基于虹软人脸识别,实现RTMP直播推流追踪视频中所有人脸信息(C#)

毕业设计stm32机器视觉的人脸识别系统 - 单片机 物联网 嵌入式

人脸识别基于matlab GUI人脸实时检测与跟踪含Matlab源码 673期