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

2023-11-03


1 简介

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

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

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

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 最后

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机毕设 基于单片机的人脸识别追踪 的相关文章

  • java中filereader读取文件_FileReader读取文件

    前言 FileReader是一种异步文件读取机制 结合input file可以很方便的读取本地文件 input file 在介绍FileReader之前 先简单介绍input的file类型 input的file类型会渲染为一个按钮和一段文字
  • [IDEA]报错 Could not autowire. No beans of 'XXXMapper' type found. less... (Ctrl+F1)

    在Idea的spring工程里 经常会遇到Could not autowire No beans of xxxx type found的错误提示 但程序的编译和运行都是没有问题的 这个错误提示并不会产生影响 但红色的错误提示在有些有强迫症的
  • ES基础操作及java代码

    ES相关随手记 文章目录 ES相关随手记 一 基本操作 1 es三大属性 索引 映射 文档 1 1 索引 1 2 映射 1 3 文档 1 3 2 文档的批量操作 二 高级查询 说明 1 查询所有 2 term 基于关键词查询 3 range

随机推荐

  • Apache + Tomcat + proxy_module 集群配置详解

    见转载 地址 http blog csdn net wccmfc123 article details 22829219 Apache Tomcat集群配置详解 2 补充 对 tomcat6 conf server xml文件修改配置如图
  • Camera日记(一)-ISP

    ISP Image Signal Processor 既图像信号处理 用于处理图像信号传感器输出的图像信号 它在相机系统肿占有核心主导的地位 是构成相机的重要设备 背景 图像采集设备存在缺陷 作用 数字图像经过采集 存储 显示 达到与人眼直
  • isce D-InSAR

    一 数据准备 二 配置文件insarApp xml 我设置的解缠常用参数grass和snaphu
  • 初等代数不等式1

    10 3赫尔德不等式还可以写成 即 即 简称 幂均值的几何均值不小于积均值 注 赫尔德与切比雪夫的不同点 赫尔德要求是 切比雪夫要求是同调 赫尔德的积均值小 切比雪夫的积均值大 10 4若 和为三个正实数序列 且 则 式称为加权赫尔德不等式
  • 【leetcode】93. 复原 IP 地址

    93 复原 IP 地址 题目链接 思路分析 代码实现 题目链接 93 复原 IP 地址 思路分析 既然是复原IP地址 那么就必然需要一个判断是否符合IP的函数 其次我们对于一段处理好的子串 需要将其提取出来 以及在回溯的时候 我们要将这一段
  • 第十一章 从Javaweb原⽣jdbc到MyBatis3.X

    1 javaweb通过原 jdbc访问数据库 原 jdbc访问数据库步骤 加载JDBC驱动程序 创建数据库的连接 创建preparedStatement 执 SQL语句 处理结果集 关闭JDBC对象资源 Springboot项 测试原 JD
  • 安捷伦34970a驱动及软件安装_最小最干净无需安装的驱动软件

    对于新安装系统电脑的驱动更新 驱动精灵基于驱动之家十余年的专业数据积累 支持度高达98 3 已经为数亿用户解决了各种电脑驱动问题 是目前有效的驱动软件 驱动精灵 支持市面99 的网卡设备 完美解决了系统新装问题 但对老电脑来说 也有自身的一
  • 计算二维离散随机变量的联合概率分布

    一 定义 Joint probability distribution 给定至少两个随机变量X Y 它们的联合概率分布 Joint probability distribution 指的是每一个随机变量的值落入特定范围或者离散点集合内的概率
  • Win11设置共享文件的方法

    1 按下键盘的win r键打开运行窗口 输入compmgmt msc指令 如图所示 2 随后在计算机管理的用户文件夹中 打开Guest账户 如图所示 3 如下图所示完成选项勾选以后 点击确定按钮 如图所示 4 接着右键需要分享的文件 打开属
  • Xeon可扩展Xeon睿频

    进行多线程AVX512运算的时候 需要把频率降下来 使用更低的电压 才能把功耗控制在一个TDP范围内 这就是全核AVX512默频 如果散热给力 可以提高电压增加点功耗 频率提高点 AVX512全核睿频 进行多线程AVX2运算的时候 单个核心
  • react性能优化是哪个周期函数

    shouldComponentUpdate 这个方法用来判断是否需要调用render方法重新描绘dom 因为dom的描绘非常消耗性能 如果我们能在shouldComponentUpdate方法中能够写出更优化的dom diff算法 可以极大
  • 0基础如何学习软件测试?1小时给你安排明白

    先上一张学习路线 在测试行业已经呆了5年多了 也算得上行业经验资深了吧 基本上也是摸清了这个行业的发展 所以今天也想对有转行想法的朋友分享一下经验 能够让你对这个行业有个大致的了解和对以后的发展有所规划 不会像是个无头苍蝇一样毫无头绪 东打
  • 测试环境搭建

    测试环境的搭建 为什么搭建测试环境 如果开发人员调试代码和测试人员测试软件在同一环境内 则他们的工作会互相影响 因此 需要将待测软件系统单独部署在一个独立于开发环境的测试环境中 了解软件系统结构 B S 浏览器 服务器 概念 使用浏览器访问
  • mysql 数据备份与存储引擎

    数据备份 mysql home bin下提供了mysqldump exe mysqldump sh 的可执行文件 用于备份数据库 语法 无需进入MySQL命令行 在本机命令行即可 mysqldump h IP P port u账号 p da
  • 创建SSAS项目

    2 3 创建Analysis Services 设计好了结构良好的数据仓库 并且将需要分析的业务数据装载到了数据仓库中之后 就为满足商务决策的全方位需求打下了根基 以后的操作都是基于这些拥有数据的数据仓库进行的 但是 对数据的多维分析却并不
  • 中间件运维分析中的选型与实践

    在近期的 Kylin Data Summit 上 好买财富平台架构总监王晔倞在互联网专场上分享了好买财富在中间件运维分析平台的演进过程 好买财富为什么选择从广泛应用的 ELK 转向 Apache Kylin 呢 王晔倞 我们在监控上 通常会
  • 使用python做FamaMacBeth回归

    金融资产定价常常需要用到FamaMacBeth回归 我们用python写一个模板 可以直接将数据调成需要的格式 代入代码即可出结果 所要求的数据格式 可以从链接下载 https download csdn net download weix
  • 剑指 Offer 40. 最小的 k 个数

    系列文章目录 文章目录 系列文章目录 前言 一 剑指 Offer 40 最小的 k 个数 二 使用步骤 1 引入库 解法一 暴力破解法 冒泡排序 可惜超过时间限制 解法二 快速排序法 方法三 基于快速排序的数组划分 总结 前言 一 剑指 O
  • 前端埋点pv,uv以及实现思路

    埋点就是在应用或系统中通过特定的流程收集一些信息 用来跟踪项目或系统使用的状况 后续用来进一步优化产品或是提供运营的数据支撑 目前埋点实现方法可以分为三种类型 手动埋点 在需要统计数据的地方插入代码 需要入侵业务代码 优点是数据统计比较精准
  • 单片机毕设 基于单片机的人脸识别追踪

    文章目录 1 简介 2 项目简介 2 主要器件 3 硬件效果 4 软件设计 4 1 功能架构 4 2 软件程序流程图 5 部分实现代码 6 演示效果 6 最后 1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 基于单片机的人脸识