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


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 socket 超时设置 errno 10054
Jul 01 Python
Python常用列表数据结构小结
Aug 06 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
pycharm安装和首次使用教程
Aug 27 Python
深入了解Django中间件及其方法
Jul 26 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
浅谈pytorch torch.backends.cudnn设置作用
Feb 20 Python
Python线程threading模块用法详解
Feb 26 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
自学python用什么系统好
Jun 23 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
Python图像处理库PIL详细使用说明
Apr 06 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
yii2实现根据时间搜索的方法
2016/05/25 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
Angularjs 基础入门
2014/12/26 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
JavaScript类数组对象转换为数组对象的方法实例分析
2018/07/24 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
python 等差数列末项计算方式
2020/05/03 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
校园安全广播稿
2014/02/08 职场文书
医德医风演讲稿
2014/05/20 职场文书
上班离岗检讨书
2014/09/10 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
道歉信范文
2015/05/12 职场文书
民事辩护词范文
2015/05/21 职场文书
《黄山奇石》教学反思
2016/02/18 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang
win11电脑关机鼠标灯还亮怎么解决? win11关机后鼠标灯还亮解决方法
2023/01/09 数码科技