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,一经查实,立即删除!

相关文章

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,你只需要添加一些注解和少量配置…

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

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

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

学习单片机必要的硬件学习单片机都需要什么?首先要掌握必要的电子基础知识;再次选择大众化、性价比高的单片机,熟悉它的引脚功能定义;另外还需要电脑与下载程序的下载器。一、单片机建议选择型号为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文本文件不能用二进制文件方式读入_如何使用python函数以二进制形式读取文件?...

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

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

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

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

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

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文件是怎么写_python头文件怎么写

本文主要以python2为例。首先介绍一下Python头文件的编程风格,然后再给大家详细介绍import部分的基本用法。这两个部分就是Python中头文件的组成模块。编程风格#!/usr/bin/env python #在文件头部 ( 第一行 ) 加上 设置 Python 解释器 # -*- coding: utf-8 -*- #在文…

【学习笔记】第二章——处理机调度的概念、层次、时机、切换过程 调度方式、调度算法的指标

文章目录一. 概念 & 层次1. 高级调度(作业调度)2. 中级调度(内存调度)挂起态 & 七状态模型3. 低级调度(进程调度)4. 三种调度的对比联系 && 总结二. 时机、切换过程 & 调度方式1. 进程…

formdata上传文件_关于multipart/formdata上传文件

最近在做一个文件上传的开放接口,用到Content-Type: multipart/form-data这种请求类型,特地做了一些研究和记录。在最初的 http协议中,并没有上传文件方面的功能。RFC1867为 http协议添加了这个能力。常见的浏览器,如 Microsoft I…

【学习笔记】第二章——调度算法:先来先服务FCFS、短作业优先SJF、高响应比HRRN

文章目录一. 先来先服务(FCFS)二. 短作业优先(SJF)三. 高响应比优先1. 对前面两种算法的思考2. 描述四. 一、二、三总结例子都要手动写一遍哦~这三个是供早期的批处理系统使用的算法 一. 先来先服务(FCFS&a…

【学习笔记】第二章——时间片轮转RR、优先级调度、多级反馈队列调度算法

文章目录一. 时间片轮转二. 优先级调度三. 多级反馈队列调度算法四. 总结一. 时间片轮转 公平,轮流给进程提供时间片只用于进程调度(只有进程才能被分配时间片)抢占式,由时钟装置发出时钟中断来通知**缺点:**高频的进…

laravel 分词搜索匹配度_elasticsearch基础笔记9-elasticsearch 词项全文搜索

es的核心功能就是搜索和分析。那么我们看看搜索相关内容1、搜索机制在进入搜索之前,会对查询体根据情况进行分析和处理。2、有哪些常用搜索类型全文查询 词项查询 复合查询 嵌套查询 位置查询 特殊查询等。我们常用到的就是前三种,学起来简单&#xff0c…

【学习笔记】第二章——进程同步、进程互斥、进程互斥的硬件/软件实现方法

文章目录一. 进程同步 && 进程互斥四个区域四个原则总结:二. 进程互斥的软件实现方法1)单标志法2)双标志先检查法3)双标志后检查法4)Peterson 算法总结三. 进程互斥的硬件实现方法1)中断屏蔽方法2&…

python的数据结构包括那些_python算法与数据结构-什么是数据结构

一、什么是数据结构 数据结构,直白地理解,就是研究数据的存储方式。 我们知道,数据存储只有一个目的,即为了方便后期对数据的再利用,就如同我们使用数组存储 {1,2,3,4,5} 是为了后期取得它们的值,因此&…