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


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调用cmd复制文件代码分享
Dec 27 Python
使用python解析xml成对应的html示例分享
Apr 02 Python
python下调用pytesseract识别某网站验证码的实现方法
Jun 06 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
简单分析python的类变量、实例变量
Aug 23 Python
WxPython实现无边框界面
Nov 18 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
Python文件夹批处理操作代码实例
Jul 21 Python
通过实例解析python subprocess模块原理及用法
Oct 10 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文件上传你必须知道的几点
2015/10/20 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
JS+CSS实现随机点名(实例代码)
2019/11/04 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
Python 闭包的使用方法
2017/09/07 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
python async with和async for的使用
2019/06/20 Python
餐饮服务食品安全责任书
2014/07/25 职场文书
2014年妇联工作总结
2014/11/21 职场文书
服务明星事迹材料
2014/12/29 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
运动会表扬稿范文
2015/05/05 职场文书
离婚被告代理词
2015/05/23 职场文书
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python