树莓派+摄像头实现对移动物体的检测


Posted in Python onJune 22, 2019

在上一篇文章中实现了树莓派下对摄像头的调用,有兴趣的可以看一下:python+opencv实现摄像头调用的方法

接下来,我们将使用python+opencv实现对移动物体的检测

一、环境变量的配置

我们可以参照上一篇文章对我们的树莓派进行环境的配置

当我们将cv2的库安装之后,就可以实现对摄像头的操作

二、摄像头的连接

在此实验中,我使用的为usb摄像头

当我们连接摄像头之后,终端输入

ls /dev/video*

如果终端提示如下:

树莓派+摄像头实现对移动物体的检测

则表示摄像头连接成功

三、编码实现对移动物体的检测

使用python编写程序,实现对移动物体的检测,代码如下

#encoding=utf-8
import RPi.GPIO as GPIO
import cv2
import time
import os
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.OUT)
 
camera = cv2.VideoCapture(0)
if camera is None:
 print('please connect the camera')
 exit()
 
fps = 30 
pre_frame = None
 
led = False
 
while True:
 start = time.time()
 res, cur_frame = camera.read()
 if res != True:
 break
 end = time.time()
 seconds = end - start
 if seconds < 1.0/fps:
 time.sleep(1.0/fps - seconds)
 
 cv2.namedWindow('img',0);
 #cv2.imshow('img', cur_frame)
 key = cv2.waitKey(30) & 0xff
 if key == 27:
 break
 
 gray_img = cv2.cvtColor(cur_frame, cv2.COLOR_BGR2GRAY)
 gray_img = cv2.resize(gray_img, (500, 500))
 gray_img = cv2.GaussianBlur(gray_img, (21, 21), 0)
 
 if pre_frame is None:
 pre_frame = gray_img
 else:
 img_delta = cv2.absdiff(pre_frame, gray_img)
 thresh = cv2.threshold(img_delta, 25, 255, cv2.THRESH_BINARY)[1]
 thresh = cv2.dilate(thresh, None, iterations=2)
 
 contours, hierarchy = cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
 for c in contours:
  if cv2.contourArea(c) < 1000:
  continue
  else:
 (x,y,w,h) = cv2.boundingRect(c)
 cv2.rectangle(cur_frame,(x,y),(x+w,y+h),(0,255,0),2)
 
 print("something is moving!!!")
 led = True
 if led == True:
 for i in range(30):
 GPIO.output(18,GPIO.HIGH)
 time.sleep(0.03)
 GPIO.output(18,GPIO.LOW)
 time.sleep(0.03)
  break
 
 cv2.imshow('img', cur_frame) 
 pre_frame = gray_img
 
camera.release()
cv2.destroyAllWindows()

我的树莓派终端不能显示中文,因此会出现乱码

Ubuntu下的运行结果如下

树莓派+摄像头实现对移动物体的检测

树莓派下执行结果如下:

树莓派+摄像头实现对移动物体的检测

此外,在检测物体移动的同时,添加了led闪烁以及框选移动部分的功能,led安装方法请移步之前的博客

文章参考链接:OpenCV检测场景内是否有移动物体

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的Template使用指南
Sep 11 Python
python通过floor函数舍弃小数位的方法
Mar 17 Python
Python中的Classes和Metaclasses详解
Apr 02 Python
Python实现的HTTP并发测试完整示例
Apr 23 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
详解opencv中画圆circle函数和椭圆ellipse函数
Dec 27 Python
Python GUI库PyQt5样式QSS子控件介绍
Feb 25 Python
Python开发入门——迭代的基本使用
Sep 03 Python
Python headers请求头如何实现快速添加
Nov 03 Python
Python Process创建进程的2种方法详解
Jan 25 Python
Python内置数据类型中的集合详解
Mar 18 Python
Python数据结构与算法(几种排序)小结
Jun 22 #Python
python+opencv实现摄像头调用的方法
Jun 22 #Python
python算法与数据结构之冒泡排序实例详解
Jun 22 #Python
分析运行中的 Python 进程详细解析
Jun 22 #Python
机器学习实战之knn算法pandas
Jun 22 #Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 #Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 #Python
You might like
基于php 随机数的深入理解
2013/06/05 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
php实现上传图片文件代码
2015/07/19 PHP
PHP 7的一些引人注目的新特性简单介绍
2015/11/08 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
JS脚本defer的作用示例介绍
2014/01/02 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
python中的对象拷贝示例 python引用传递
2014/01/23 Python
Python3中多线程编程的队列运作示例
2015/04/16 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
导游个人求职信
2014/04/25 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
中学校园广播稿
2015/08/18 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
z-index不起作用
2021/03/31 HTML / CSS
Pytest allure 命令行参数的使用
2021/04/18 Python