2021-01-26

使用树莓派实现的口罩检测

Nie_Hen 2020-05-17 11:48:53 17280 收藏 614 原力计划
分类专栏: IOT应用 人工智能
版权
基于树莓派3B+ 官方摄像头 两个指示灯 以及基于目标检测SSD算法实现的树莓派口罩检测

项目演示: 链接

口罩检测项目地址
在这里插入图片描述

使用的口罩检测 项目是AIZOO团队实现的 使用的是目标检测常用的SSD算法。
该团队也提供了数据集,大家也可以自己去训练一下。
(由于疫情在家 连不上实验室的服务器我还无法训练)
项目GitHub链接

在这里插入图片描述
(最后那几帧是做GIF图的问题…)

AIZOO团队给出的 代码在Windows上很容易以跑通。安装opencv和kears比较容易。也不需要很复杂的更改代码。

下面重点讲在树莓派上的配置以及使用

树莓派配置
参考链接有很多基础配置
对树莓派进行换源 进行网络配置等等

1.配置环境
使用python版本是 python3 (我使用的是python3.5)
opencv以及kears 这两个库在树莓派上比较难以安装

参考我博客里面 都有两个的安装教程
树莓派上安装opencv以及各种采坑
opencv要耐心仔细装,容易出错!!!
树莓派安装kears

  1. 树莓派摄像头
    硬件安装 :
    将摄像头排线露出金属的部分背对网孔和usb接口,即另一面的蓝色塑料封皮正对网孔和usb接口
    小心地将接线板上的黑色塑料往上拉(请务必保证电源关闭,手指干燥)
    将排线插入,黑色塑料往下压紧排线
    在这里插入图片描述
    摄像头启用以及测试
    打开Raspberry Pi配置工具开启Camera
    在这里插入图片描述
    在这里插入图片描述

终端输入 ls /dev/ 进行验证
如果输出内容中有video0 跳过下一步
ls /dev/无 video0:
1、输入 sudo raspi-config
先在interfacing option里把camera接口打开(enable)。

2、如果使用的是树莓派官方摄像头,还需输入sudo modprobe bcm2835-v4l2
输入这行命令,发现/dev/下已经有摄像头的设备了。
这句话相当于加载驱动模块,每次开机都要开启,摄像头才能使用。

可以将这条命令放入 /etc/rc.local 文件中,让其自启动。
树莓派摄像头Camera的使用

python调用摄像头
from picamera import PiCamera
from time import sleep

camera = PiCamera()

Rotate by 180 degrees when the camera is upside-down

camera.rotation = 180

camera.start_preview(alpha=200) # Make the camera preview see-through by setting an alpha level from 0 to 255
sleep(5)
camera.stop_preview()
1
2
3
4
5
6
7
8
9
10
上述代码实现打开摄像头预览5秒钟再关闭的功能。但是如果这个程序仅在Raspberry Pi接入了显示器才有效,SSH或是VNC访问是无效的。
Raspberry Pi 摄像头模块入门

树莓派相机设置 远程打开预览

opencv调用摄像头
使用opencv直接打开摄像头
import cv2
import numpy as np

cap = cv2.VideoCapture(0)
while(1):
# get a frame
ret, frame = cap.read()
# show a frame
cv2.imshow(“capture”, frame)
if cv2.waitKey(1) & 0xFF == ord(‘q’):
break
cap.release()
cv2.destroyAllWindows()
1
2
3
4
5
6
7
8
9
10
11
12
13
如果打不开摄像头 去上面看是不是没有video0

树莓派获取到视频流给opencv
from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2

initialize the camera and grab a reference to the raw camera capture

camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 32
camera.hflip = True
camera.vflip = True
rawCapture = PiRGBArray(camera, size=(640, 480))

allow the camera to warmup

time.sleep(0.1)

capture frames from the camera

for frame in camera.capture_continuous(rawCapture, format=“bgr”, use_video_port=True):
# grab the raw NumPy array representing the image, then initialize the timestamp
# and occupied/unoccupied text
image = frame.array
# show the frame
cv2.imshow(“Frame”, image)
key = cv2.waitKey(1) & 0xFF
# clear the stream in preparation for the next frame
rawCapture.truncate(0)
# if the q key was pressed, break from the loop
if key == ord(“q”):
break
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
推荐使用第一种方式 简单

参考链接Raspberry调用picamera库控制自带的摄像头

python控制树莓派GPIO
要用到两个led灯 所以要在代码里面控制GPIO

安装库

sudo apt-get install python-rpi.gpio

示例代码

-- coding: utf-8 --

import RPi.GPIO as GPIO
import time

BOARD编号方式,基于插座引脚编号

GPIO.setmode(GPIO.BOARD)

输出模式

GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)

while True:
GPIO.output(11, GPIO.HIGH)
time.sleep(1)
GPIO.output(11, GPIO.LOW)
time.sleep(1)
GPIO.output(13, GPIO.HIGH)
time.sleep(1)
GPIO.output(13, GPIO.LOW)
time.sleep(1)
GPIO.output(15, GPIO.HIGH)
time.sleep(1)
GPIO.output(15, GPIO.LOW)
time.sleep(1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
enter description here
两个led灯一个 接两个普通输出引脚就行。另外记得接地。
我用的是一个13 一个是15
在这里插入图片描述

更改代码、完善代码
现在环境配置好了
可以调用摄像头 可以控制GPIO了
只需要:

根据上面的口罩检测的项目放到树莓派上
改动代码增加GPIO的部分
改动输入参数部分
根据运行情况更改检测帧率
我改好的代码(pi_cam.py)会放到下面。

运行报错out of memory
树莓派性能不行 跑起来还是有点费劲

1.增加可用内存量(减少分配给GPU的内存)

sudo raspi-congfig 启动树莓派配置程序, advanced options->memory split
分给GPU的内存量设为32(如果设为16或0,系统会默认分配64M,就不能做到内存占用最少)。
需要注意的是如果启用摄像头,则GPU会自动被分配128M内存。
2.关掉图形化界面

sudo raspi-config

enter description here

不再报出out of memory

但是卡顿的情况依然存在
再改代码:

增加检测帧数
简化代码将opencv无用部分删除(这样看不到画面了只能通过灯珠变化和终端 判断情况)
项目演示: 链接
在这里插入图片描述
在这里插入图片描述

else
根据上面的教程大家可以自己写打开树莓派摄像头检测并控制灯,也可以看我写好的。
大家对物联网 计算机视觉的应用感兴趣的可以关注我,我博客内有相关文章,后续也会发一下类似的应用型文章(可以用来学习以及参加比赛或者做毕设)

pi_cam.py下载链接

使用方法: 将前面提到的AIZOO团队提供的项目下载下来。以及我写的pi_cam.py下载下来。放入同一目录下,上传到树莓派中(按照上面步骤 配置好环境 )。
命令行进入目录直接调用就可以,
python pi_cam.py
(如果python默认是python2.7 则要使用python3 pi_cam.py)
命令行中关掉 运行程序
ps -ef |grep pi_cam.py
enter description here
有什么问题可以评论交流。
感觉有用的或者帮助到你的可以收藏 点赞 关注。
(有问题需要交流可以加QQ1639206518 )

点赞
116

评论
44

分享

收藏
614

打赏

举报
关注
一键三连

点赞Mark关注该博主, 随时了解TA的最新博文

树莓派基础学习&树莓派项目实战演示&Python语言
04-22
课程主要学习树莓派的一些基础知识和一些常规的操作和安装软件出现的常见问题以及学习基于树莓派的一些项目,避免新手入坑。例如:从安装系统——远程桌面控制——中文界面的设置——密码的设置—— 安装输入法 ——Linux基础命令——文件操作——树莓派摄像头的使用 ——基于树莓派人脸识别——语音识别——图像识别——语音播报——OpenCV2的安装——无论是新手还是树莓派爱好者希望能在里边共同学习到一些树莓派知识和使用方法。

优质评论可以帮助作者获得更高权重
表情包
zhoumoon
码哥码哥周健文:在生产环境下还是不建议使用Python8月前回复
点赞
10
siriuswilliam
码哥码哥叫我学弟回复:原来opencv很不成熟17天前回复
点赞
zhoumoon
码哥码哥周健文回复brandy2008:依附式开发,意味着在你不完全了解它的情况下使用开源库,在生产环境中会比较容易出现各种意想不到的bug,除非团队有足够耐心维护,否则建议使用付费或成熟可用的开源库。3月前回复
点赞
zhoumoon
码哥码哥周健文回复brandy2008:得益于开源库,用python做实验很方便,如果对性能和稳定性有要求,建议还是使用C/C++部署到生成环境当中。7月前回复
点赞
brandy2008
brandy2008回复:生产环境为什么不建议用Python?7月前回复
点赞
qq_37924905
爱码士爱码士水巷石子:博主写的非常清晰,对我很有帮助,谢谢,方便可以加个关注。共同学习!1月前回复
点赞
4
hihell
爱码士爱码士梦想橡皮擦:写的不错,顶个贴,点个赞,嘿嘿!1月前回复
点赞
2
jxyk2007
码哥码哥三块钱0794:学习了8月前回复
点赞
2
m0_46298587
拉马努金1729:人脸识别好像有个哈士奇人脸识别模块,连接arduino就可以用mind+编程,对于新手来说这个实现更简单。9天前回复
点赞
1
qq_44925043
Moement:树莓几8月前回复
点赞
1
Nirvana_6174
码哥码哥Nie_Hen回复:3B+8月前回复
点赞
daguangdian
爱码士爱码士DA光电:学习了16天前回复
点赞
sinat_51785486
码神码神龙卷风焦96:设计:告诉我问题,回车,问题出现17天前回复
点赞
qq_45937199
爱码士爱码士ctotalk:thanks,欢迎关注一起交流27天前回复
点赞
weixin_43913566
沈世安:大佬Tensorflow安装源码点不进去啊 有没有教程1月前回复
点赞
<123>
vant当中van-list的使用
柚子的
3万+
van-list里面的元素不能又float样式,否则会连续触发 load 事件 原代码

独家 | COVID-19:利用Opencv, Keras/Tensorflow和深度学习进行口罩检测
数据派THU
1071
作者:Adrian Rosebrock翻译:张一然校对:冯羽本文约8800字,建议阅读10+分钟本文为大家介绍了如何使用Opencv,Keras/Tensorflow构建一个口罩检测模型…
利用树莓派3B进行口罩佩戴检测_恒久远个人记录
12-25
可以利用树莓派以及树莓派摄像头,实现人脸口罩检测、体温检测、天气预报…… 利用树莓派3B结合树莓派摄像头,实现人脸口罩佩戴检测; 搭配红外温度传感器模块MLX90614,实…
如何用树莓派4B与Paddle Lite实现实时口罩识别?_百度大脑
1-4
前段时间在Paddle Lite的QQ群里面看到小伙伴们对在树莓派上部署实时的口罩识别很感兴趣,想着目前这个时期,能用低成本部署口罩识别系统对很多场景的帮助还是很高的。可…
基于树莓派的摄像头实时目标追踪系统
董绘峰的博客
6337
目录一、项目背景二、准备设备三、树莓派系统搭建3.1 抹除系统四、Opencv库安装 一、项目背景 二、准备设备 三、树莓派系统搭建 基于MAC系统写入树莓派系统 3.1 抹除系统 四、Opencv库安装 …
基于树莓派的人脸识别门禁系统
蓝色鲜橙多的博客
1万+
这是近期以来完成的第二个项目,第一个项目是基于STM32的智能窗帘控制系统(语音控制、温湿度控制、蓝牙APP控制、光敏控制)第一个项目也会在后续进行一个赘述。 1. 前期准备: 某宝准备一块相对性能好的树莓派,我自己用的是树莓派3B+。 购置一个配套电源 购置一个SD卡,因为你需要安装系统、配置环境。这里特别强调配置环境是一个让人特别头大的事情。如果你想无压力的话你可以购买64G,如果性价…
如何用树莓派4B与Paddle Lite实现实时口罩识别?_Paddle…
1-20
前段时间在Paddle Lite的QQ群里面看到小伙伴们对在树莓派上部署实时的口罩识别很感兴趣,想着目前这个时期,能用低成本部署口罩识别系统对很多场景的帮助还是很高的。可…
树莓派入门(一)之树莓派简介
wu_lian_nan的博客
4159
准备写一些树莓派入门教程,本教程采用c语言教学。大概涉及树莓派的gpio口的控制,树莓派介绍,以及具体通过几个例子使用gpio口。主要是针对树莓派入门者。 我们使用的wiringPi库,所以我们只看wiringPi编码,至于BCM编码暂时不用管它。 比如:我们要控制物理引脚8,它对应的wiringPi编码为15,(对应的BCM编码为14)。使…
树莓派官方摄像头调焦
m0_37509650的博客
6678
坑了我很久的一个点:原先以为树莓派官方的摄像头(如图)是不能调焦距的,因为淘宝卖家介绍里面,包括树莓派官网对摄像头的介绍里面都没有提及调焦的问题,这种其实是可以调的,前面那个圈可以拧。 树莓派可调参数: camera.saturation = 80 # 设置图像视频的饱和度 camera.brightness = 50 # 设置图像的亮度(50表示白平衡的状态) camera.shut…
让树莓派变身照相机——摄像头控制
学不可以已
3万+
1.前言 树莓派作为一台小型电脑,玩法多种多样。本文介绍树莓派控制摄像头的方法。 2.准备工作 1)连接摄像头与树莓派 2)修改树莓派配置,开启摄像头模块。 sudo raspi-config 如图所示,选择“Enable Camera”, 保存后将自动重启。 3. 拍摄与查看 接下来,可以进行拍摄了。 raspistill -t 2000 -o image.jpg ras
树莓派安装opencv打开摄像头实现实时传输
xiao__run的博客
2万+
OpenCV简介:opencv是一个开源的计算机视觉库,是英特尔公司资助的两大图像处理利器之一。它为图像处理、模式识别、三维重建、物体跟踪、机器学习和线性代数提供了各种各样的算法。(扩展阅读) 其实安装与使用OpenCV库非常简单,平常做图像处理算法处理的时候大家经常习惯用MATLAB,虽然MATLAB具有强大的工具箱,但是无法达到实时的效果,这一点小编一点也不喜欢,在这篇文章中,
【树莓派】树莓派4B新手篇:安装官网Raspbian Buster系统及基础配置
Nieson2012的专栏
6万+
目录 1、前言 2、树莓派4B有什么特色? 3、树莓派新手准备 4、烧录Raspbian Buster系统到Micro SD卡 开启SSH及配置无线连接 5、启动安装树莓派系统 启动树莓派 6、树莓派的基本配置 6.1 系统配置 6.2 更改apt软件源与系统源 6.3 更改pip源 6.4 安装远程桌面 6.5 安装中文字体 1、前言 对于很多程序员而言,树莓派如今…
树莓派+Arduino 实现简易的手势识别智能小车
qq_35420010的博客
1620
本实验使用Arduino+树莓派进行简单的手势识别,实现对小车状态的控制 材料准备: Arduino开发板一块 树莓派3B 杜邦线若干 L298N 小车底盘 HC-05蓝牙模块 MMA7361传感器 ###实现原理: 树莓派通过蓝牙串口与Arduino连接(实验室没有多余的蓝牙模块,零时想到用树莓派上的蓝牙代替下,使用树莓派作为主控控制小车有点大材小用哈哈),工作时Arduino作为发送端通…
修改树莓派用户密码
Maoning Guan的博客
6万+
树莓派在安装系统之后都会有原始默认的用户名和密码,接下来我们可以自行修改树莓派的用户密码。
树莓派的操作系统介绍
huayucong的博客
2万+
1、Raspbian(单纯的Arm版的Linux系统,基于Debian) 是当前实用最广泛的操作系统 2、Pidora(单纯的Arm版的Linux系统,基于Fedora) 是拥有另一种风格的树莓派操作系统 3、Arch Linux ARM(单纯的Arm版的Linux系统,基于Arch Linux) 对linux操作系统很熟悉的人大都实用
树莓派远程监控+运动目标检测
祖安狂人的博客
9703
近期的我在做的一个项目,正好需要用到远程监控以及内网IP映射成公网IP,以便穿透局域网的限制,但是说实话,我是小白啊,我是菜鸡啊,而且我TM是一个搞嵌入式的啊…emmmm用爱发电,所以,没办法,能怎么办呢,emmmm,在深思熟虑之下,只能认真学习(CTRL -C&amp;amp;amp;amp;amp;amp;amp;amp;amp;V之后),由此,终于还算是弄出来了…在这里插入代码片 闲话少谈,正文要紧: 首先,关于树莓派的远程监控问题,需要详解的同学,可以…
树莓派学习笔记——GPIO功能学习
物联网 IoT 经验分享
15万+
树莓派现在越来越火,网上树莓派的资料也越来越多。树莓派源自英国,国外嵌入式开源领域具有良好的分享精神,树莓派各种集成库也层出不穷,下面推荐几个。
为树莓派更换国内镜像源
投笔从容
7万+
使用管理员权限(经由sudo),编辑/etc/apt/sources.list文件。参考命令行为: $ sudo nano /etc/apt/sources.list 用#注释掉原文件内容,用以下内容取代: deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free …
利用树莓派和Kodi投屏
生信了
1万+
本文介绍了如何利用树莓派和Kodi实现移动设备投屏到电视机的功能。篇幅较长,主要分为如下几个部分 什么是投屏? 什么是树莓派和Kodi 适用情境 具体实现过程 4.1 连接电视机和树莓派 4.2 配置树莓派视频输出参数 4.3 安装Kodi 4.4 设置Kodi播放参数 4.5 测试投屏 4.6 下载手机遥控器 结语 1. 什么是投屏 投屏就是将一个设备上的屏幕显示内容投射到另一台设备…
实时人流量检测
xumengfan的博客
1万+
将 Kinect 放在天花板上,朝向地面,由 Kinect 传感器生成RGB和深度图,深度信息是用来达到外观不变的目的。由于人头部到 Kinect 的距离总是比身体其他部位离得更近,人数计算的问题也就等价于寻找本地数据中 局部深度值最小的区域。根据深度图的特点,water-filling算法能鲁棒地标度不变地找到这些局部区域。 整体思路: 具体实现: Kinect本身的红外发射器功率…
树莓派安装openCv
Chen_RuiMin的博客
6733
前言 虽然,在控制摄像头上,树莓派已经为我们集成了picamera库,但我不经还是想用用opencv, 于是就要在树莓派上安装我们的opencv 在树莓派安装opencv的路不是那么容易的,就算你安装完成后,也会出现缺少各种依赖库(so文件) 一、安装好opencv依赖文件 sudo apt-get install -y libjasper-dev libqtgui4 libqt4-t…
【方法】树莓派小车自动循迹(摄像头)
crazyang的博客
4万+
文章目录说明代码 今天我们来介绍一下树莓派小车的循迹教程 首先看一个效果视频 说明 该小车的硬件是:树莓派+L298N,其实用Arduino也是一样的,下位机只提供一个车轮的控制,视觉识别都是通过树莓派完成的 看到这样一个赛道,赛道是白色的,其余部分是我们都看成非白色,这样很自然而然地就想到了二值化,将赛道的白色单独显示出来,这里采用的是大津法二值化。 视觉利用Opencv来实现,关于如何安装O…

你可能感兴趣的:(2021-01-26)