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


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 相关文章推荐
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
Python自定义简单图轴简单实例
Jan 08 Python
python批量修改图片后缀的方法(png到jpg)
Oct 25 Python
python3实现名片管理系统
Nov 29 Python
Python实现的爬取百度贴吧图片功能完整示例
May 10 Python
基于pytorch中的Sequential用法说明
Jun 24 Python
Python生成器generator原理及用法解析
Jul 20 Python
Python通过类的组合模拟街道红绿灯
Sep 16 Python
如何使用PyCharm及常用配置详解
Jun 03 Python
python脚本框架webpy模板赋值实现
Nov 20 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
基于MySQL分区性能的详细介绍
2013/05/02 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
javascript制作2048游戏
2015/03/30 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
JavaScript跨域调用基于JSON的RESTful API
2016/07/09 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
从头学Python之编写可执行的.py文件
2017/11/28 Python
Python zip()函数用法实例分析
2018/03/17 Python
pandas object格式转float64格式的方法
2018/04/10 Python
python实现邮件自动发送
2019/08/10 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
护士自我鉴定
2013/10/23 职场文书
大学生就业求职信
2014/06/12 职场文书
生活小常识广播稿
2014/09/16 职场文书
班级联欢会主持词
2015/07/03 职场文书
驻村工作简报
2015/07/20 职场文书
新员工入职感言范文!
2019/07/04 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
无线电知识基础入门篇
2022/02/18 无线电