python利用tensorflow识别圆_RaspberryPi上实现佩戴口罩识别——2020电赛F题小记

今年的电赛题目非常反常,传统控制题目基本没有,新增加了测距题目,甚至物联网题目,Ai题目都出来了。直接电赛变算法+钞能力大赛。看到F题:测温+人脸识别,碰巧我们手头有调好的红外测温模块+树莓派+openmv,还有一个现成的口罩识别算法,而openmv可以实现人脸识别,所以就选择了这道题。作为一个本组唯一一个非电类专业的,本人负责Ai口罩识别算法的移植以及编写一个opencv实现的人脸识别算法作为预备方案。

由于算法都是写好的,并且在ubuntu中全部测试成功。下面主要任务就是把他移植进树莓派了。万事环境难,在这几天里我给树莓派刷机了不下十次,下面记录一下艰辛例程。

配环境主要分下面几步:

  1. 树莓派安装raspbian
  2. 安装opencv-python
  3. 安装tensorflow1.13
  4. 树莓派连接显示器

安装系统并且连接显示器

第一步比较简单,从官网下载镜像,然后用win32diskManager烧录进去就可以用,烧录好之后,如果要利用ssh功能的话,要在boot目录下新建一个空白文件命名为ssh(不带任何拓展名),如果需要利用HDMI显示器,则需修改boot目录下的config.txt

hdmi_force_hotplug=1
config_hdmi_boost=4

在文件末尾加入以上内容,或者将以上内容对应的注释都替换掉。

hdmi_force_hotplug:强制使用HDMI输出并且支持热插拔(强行认为HDMI口已经插入了设备)

config_hdmi_boost:HDMI信号增强。

按照以上步骤操作之后,应该就能看到树莓派的桌面了。

99a48a015dd7ec52f399bf854c6c7ffc.png

配置opencv环境

由于口罩识别的数据处理以及显示过程均需要用到opencv库,因此需要在raspbian中安装opencv-python-4.4.0(和ubuntu上版本统一,减少兼容性问题)。

我在安装过程中莫名出现了玄学hash值问题,经过多次google发现,原因是网络不稳定,需要用下面的方式安装,或者直接wget下载whl文件吧

8b927eb10c6e19661e60b304b1625c40.png
pip3 

安装好之后,打开测试文件,测试摄像头,发现可能会出现报错,原因是raspbian中没有依赖环境,需要安装

sudo apt-get install libatlas-base-dev sudo apt-get install libjasper-dev sudo apt-get install libqtgui4 sudo apt-get install python3-pyqt5 sudo apt install libqt4-test

安装好之后可以用以下代码测试摄像头是否正常

import cv2 as cvVideo = cv.VideoCapture(0)while True:ret,frame = Video.read()cv.imshow("capture",frame)cv.waitKey(33)Video.release()
cv.destroyAllWindows()

如果不能显示可能需要打开外设开关,具体方法为命令行中输入sudo raspi-config,选择interfaceing-options,将camera选择为enable。

配置Tensorflow

由于tensorflow较大,推荐先从电脑上通过wget下载好后上传树莓派,否则由于树莓派网速慢且不稳定会出现一些麻烦的问题,下载方法如下。

wget http://piwheels.org/simple/tensorflow/tensorflow-1.13.1-cp37-none-linux_armv7l.whl

下载后可通过sftp上传至树莓派,上传好之后找到whl对应的目录,使用以下命令安装即可

pip3 install tensorflow-1.13.1-cp37-none-linux_armv7l.whl

安装好后可用以下代码测试

python3
#命令行中进入python3环境
import tensorflow as tf
hello = tf.constant('Hello!')
sess = tf.Session()
print(sess.run(hello))

若出现和opencv类似的hash问题则继续从电脑上wget下载镜像上传到树莓派即可。

Keras的安装也需要wget后手动安装whl,同时如果需要保存模型为h5文件则还需安装以下依赖:

sudo apt-get install libhdf5-dev

源码请参考这里。

https://github.com/Anakin0607/Mask-recogniser-on-RaspberryPi/​github.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python输错了怎么办_python怎么实现输错三次密码之后锁定

功能需求: 1.输入用户名密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 实现思路: 1.判断用户是否在黑名单,如果在黑名单提示账号锁定。 2.判断用户是否存在,如果不存在提示账号不存在。 3.判断账号密码是否正确,如果…

exchange邮件服务器_基于Spring Boot快速实现发送邮件功能

邮件在项目中经常会被用到,比如用邮件发送通知。比如,通过邮件注册、认证、找回密码、系统报警通知、报表信息等。本篇文章带大家通过SpringBoot快速实现一个发送邮件的功能。 邮件协议 下面先简单了解一下常见的邮件协议。常用的电子邮件协议有SMTP、PO…

redis序列化_SpringBoot整合redis

redis是最常用的缓存数据库,常用于存储用户登录token、临时数据、定时相关数据等。redis是单线程的,所以redis的操作是原子性的,这样可以保证不会出现并发问题。redis基于内存,速度非常快,据测试,redis读的…

spring cloud alibaba_SpringCloudAlibaba与Cloud搭配方案

一 简介Spring Cloud Alibaba致力于提供微服务开发一站式解决方案。此项目包括开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,你只需要添加一些注解和少量配置…

python isalpha函数用法_python中string模块各属性以及函数的用法

任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作。 python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串操作需求: python的字符串属性函数…

php curl header_PHP中的yield与协程(二十一节)

大家好,我是老李。顺风说骚话,逆风讲道理最近在大家一起努力下,那个沙雕肺炎患病人数增长率下降了不少,总体来说还算顺,所以今天这篇注定又要骚话连篇了。听说最近不少玉米开始向大连、威海、烟台方向涌入,…

python增加一列数据_Python编程给numpy矩阵添加一列方法示例

首先我们有一个数据是一个mn的numpy矩阵现在我们希望能够进行给他加上一列变成一个m(n1)的矩阵 import numpy as np a np.array([[1,2,3],[4,5,6],[7,8,9]]) b np.ones(3) c np.array([[1,2,3,1],[4,5,6,1],[7,8,9,1]]) PRint(a) print(b) print(c) [[1 2 3] [4 5 6] [7 8 9…

用稳压管保护单片机引脚_一步一步,全程揭开单片机的原理,让做电子变得轻松自如!...

学习单片机必要的硬件学习单片机都需要什么?首先要掌握必要的电子基础知识;再次选择大众化、性价比高的单片机,熟悉它的引脚功能定义;另外还需要电脑与下载程序的下载器。一、单片机建议选择型号为STC89C52RC单片机,如…

python word 表格宽度_RPA手把手——python-docx 设置 word 文档中表格格式

艺赛旗|做RPA生态先行者 RPA10.0全新首发免费下载 点击下载 引入会用到的库 from docx import Document from docx.shared import Pt from docx.enum.text import WD_PARAGRAPH_ALIGNMENT from docx.shared import Cm from docx.shared import RGBColor 表格样式 #方法一&#…

软引用和弱引用的区别_强、软、弱、虚引用的区别和使用

原文阅读:强、软、弱、虚引用的区别和使用​mp.weixin.qq.comJava提供了四种级别的应用类型:强引用、软引用、弱引用及虚引用。那么这四种引用类型有什么区别呢?首先我们通过一张图来看看四种引用在Java中的表示:FinalReference由…

python的print输出_python中的print()输出

1.普通的输出: print(str)#str是任意一个字符串,数字・・・ 2.格式化输出: print(1,2,%s,%d%(asd,4)) 1,2,asd,4 与C语言有点类似 3.其它: >>> pi 3.141592653 >>> print(%10.3f % pi) #字段宽10,精…

python文本文件不能用二进制文件方式读入_如何使用python函数以二进制形式读取文件?...

虽然读取文件的方式各种各样,但是通过二进制,还是头一次,实现过过程并不难,我们需要将文件先做好封存,以函数的形式,保存下来,然后直接导入进行使用,这样就可以读取文件,…

一组数字中算出最相近的组合_据说在金字塔里发现的这组数字,貌似是通往宇宙的密码...

我们都知道阿拉伯数字是全世界都在用的计数单位的数字,我们的生活离不开阿拉伯数字,其广泛性很大。比如买菜、买衣服。做数学题等等都需要用到。不过呢早前有人称在埃及金字塔内发现了一组数字142857,这组数字貌似就是通往宇宙的密码。这一说…

前端悬浮窗效果_Flutter自绘组件:微信悬浮窗(一)

看微信公众号的时候时常会想退出去回复消息,但又不想放弃已经阅读一半的文章,因为回复信息后再从公众号找到该篇文章之间有不必要的时间花费,微信悬浮窗的出现解决了这个烦恼,回复完消息之后只需要点击悬浮窗就可以回到之前在阅读…

python程序设计论文_【程序设计论文】程序设计论文范文(共40篇)

发表于:2020/10/20 11:53:15  点击数:77次 微信小程序开发课程改革实践 [摘要]微信小程序由于具有不同于传统移动APP的诸多优点,自推出以来得到了业界的广泛关注,计算机类专业人才培养过程要适应市场变化…

python数据类型总结_Python 数据类型总结

感觉新学点什么总要写下来,否则总有一种记不住的感觉 数据类型 python 中的变量定义就是赋值语句比如 val1 25 val2 "hehe" 类型转换函数 int()转换成整数 float()转换成浮点数 str()转换成字符串 complex(x)将x转为复数,x为实部&#xff0c…

python分箱分类代码_Python实现变量分箱及应用

之前发的内容里,代码看不清,此篇为重发。 个人观点,信贷行业中,模型稳定性往往比模型效果更重要。信贷行业所做的任何规则、政策、模型的调整,都需要较长时间才能知道结果如何,模型迭代周期相较于其他行业可…

date类型_Quartz与Date---cron的相互转换

产生原因:因为项目最近设计到了一个Quartz相关的模块,前端需要传递时间参数到后台, 然后后台设置一个新的定时任务, 所以后台需要一个可以实现Date与cron之间的相互转换(因为Quartz需要的Cron格式的数据),所以就借助java的SimpleDateFormat的格式化,然后…

vbs if 不等于_6、if语句和关系表达式

示例3.1:星星公司致力于信件快递业务,收费标准是:500g以内6元,超过500g9元。应该就是输入重量,显示钱,那可以用cout和cin,如果w小于500,c是6,否则,c是9。//pr…

python函数定义和调用_函数定义和调用

定义函数 在JavaScript中,定义函数的方式如下: function abs(x) { if (x > 0) { return x; } else { return -x; } } 上述abs()函数的定义如下: function指出这是一个函数定义; abs是函数的名称; (x)括号内列出函数…