stm32单片机+Python手势识别点亮LED灯

目录

概要

整体架构流程

1.Python的代码

2.stm32代码

初始化串口和中断

中断函数

主函数

文章最后

概要

最近小编在做学校工作室的往年招新题目,也是做到了这道很有意思的题目,所以想把学到的东西分享一下,如果有错的话,还请大佬们指正。

首先基于Python+Opencv+mediapipe可以实现手势的识别,这里就只是识别数字,识别后得出的数据通过串口通信(Python实现)向stm32单片机传输数据,单片机收到数据后点亮相应数量的LED灯。

这里先简单介绍一下什么是Opencv和mediapipe

Opencv:OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在LinuxWindowsAndroidMac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、RubyMATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

在这里我们只是用来获取电脑的摄像头,以便后续识别的进行。

mediapipe:mediapipe是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。在谷歌,一系列重要产品,如 YouTube、Google Lens、ARCore、Google Home 以及 Nest,都已深度整合了 MediaPipe。MediaPipe大有用武之地,可以做物体检测、自拍分割、头发分割、人脸检测、手部检测、运动追踪,等等。基于此可以实现更高级的功能。

手势识别的功能就靠mediapipe中的手部检测实现的。

还有串口通信的模块pySerial:

pySerial 是 Python 中用于操作串口的第三方模块,它支持 Windows、Linux、OSX、BSD等多个平台。如果要使用 pySerial 模块,首先必须保证 Python 版本高于 Python 2.7 或者 Python 3.4。另外,如果你是用的是 Windows 系统,那必须使用 Win7 及以上的版本。
pySerial 的安装很简单,只需要执行一条命令:pip install pyserial
安装完成后,只需要在 Python 代码中使用 import serial 语句导入该模块即可。

然后通过电脑向stm32单片机通信传输数据,单片机接收到数据后点亮对应数量得LED灯。怎么样是不听起来很轻松?其实也不是很难,一步一来就好。

整体架构流程

1.Python的代码

这里先给出效果图

关于Opencv和mediapipe的下载这里就不说了,网上有很多的教程。具体的代码框架如下,具体的思路写在注释里了。

import cv2
import mediapipe as mp
import warnings
import serial
import math
ser = serial.Serial('COM7', 9600,  bytesize=8,parity=serial.PARITY_NONE,stopbits=1,timeout=None)  #打开串口
if ser.isOpen():     #判断串口是否打开成功
    print("Serial port opened successfully")
    print(ser.name)
else:
    print("Error in opening serial port")
hand_mod = mp.solutions.hands    #导入手部模型
my_hands = hand_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值