树莓派下对摄像头的调用https://blog.csdn.net/Wangguang_/article/details/89850615

树莓派点亮LEDhttps://blog.csdn.net/Wangguang_/article/details/90258604

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

程序功能:摄像头程序识别到移动的物体之后,树莓派连接的LED闪烁,屏幕中显示的摄像头界面出现绿色矩形框选物体移动部分

一、环境变量的配置

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

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

二、摄像头的连接

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

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

ls /dev/video*

如果终端提示如下:

则表示摄像头连接成功

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

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

#encoding=utf-8
import RPi.GPIO as GPIO
import cv2
import time
import osGPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.OUT)camera = cv2.VideoCapture(0)    # 定义摄像头对象,其参数0表示第一个摄像头
if camera is None:#如果摄像头打开失败,则输出提示信息print('please connect the camera')exit()fps = 30    #帧率
pre_frame = None    #总是取前一帧做为背景(不用考虑环境影响)led = Falsewhile True:start = time.time()# 读取视频流res, cur_frame = camera.read()if res != True:breakend = time.time()seconds = end - startif seconds < 1.0/fps:time.sleep(1.0/fps - seconds)cv2.namedWindow('img',0);#cv2.imshow('img', cur_frame)#检测如何按下Q键,则退出程序key = cv2.waitKey(30) & 0xffif 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_imgelse:# absdiff把两幅图的差的绝对值输出到另一幅图上面来img_delta = cv2.absdiff(pre_frame, gray_img)#threshold阈值函数(原图像应该是灰度图,对像素值进行分类的阈值,当像素值高于(有时是小于)#阈值时应该被赋予的新的像素值,阈值方法)thresh = cv2.threshold(img_delta, 25, 255, cv2.THRESH_BINARY)[1]#膨胀图像thresh = cv2.dilate(thresh, None, iterations=2)# findContours检测物体轮廓(寻找轮廓的图像,轮廓的检索模式,轮廓的近似办法)# 该行代码可能有问题,是因为opencv版本问题,如果报错请将三个参数补全# image, contours, hierarchy =   cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)contours, hierarchy =   cv2.findContours(thresh.copy(),cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)for c in contours:#灵敏度if cv2.contourArea(c) < 1000:continueelse:#框选移动部分(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 = Trueif led == True:#LED闪烁for i in range(30):GPIO.output(18,GPIO.HIGH)time.sleep(0.03)GPIO.output(18,GPIO.LOW)time.sleep(0.03)GPIO.output(18,GPIO.LOW)break#显示cv2.imshow('img', cur_frame)  pre_frame = gray_img# release()释放摄像头
camera.release()#destroyAllWindows()关闭所有图像窗口
cv2.destroyAllWindows()

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

Ubuntu下的运行结果如下

树莓派下执行结果如下:

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

https://blog.csdn.net/Wangguang_/article/details/90258604

文章参考链接:http://blog.topspeedsnail.com/archives/10797

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

  1. 基于python的移动物体检测_树莓派+摄像头实现对移动物体的检测

    在上一篇文章中实现了树莓派下对摄像头的调用,有兴趣的可以看一下:python+opencv实现摄像头调用的方法 接下来,我们将使用python+opencv实现对移动物体的检测 一.环境变量的配置 我 ...

  2. 树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测

    树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测 本文将实现树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测,我们会先实现树莓派对视频文件的逐帧检测来验证算法流程, ...

  3. 树莓派摄像头检测到人物动作

    原博文网址:https://www.jianshu.com/p/b16edb322508 本文中初步体验了一下树莓派摄像头的基础玩法,利用命令行实现拍照片.拍视频.监控等基本功能. 硬件安装 把摄像头 ...

  4. 【树莓派笔记】树莓派摄像头的简单使用

    1. 摄像头的安装 这里使用的是树莓派CSI (Camera Serial Interface)摄像头.引脚面朝micoHDMI接口处.关机后安装,热插拔可能无法检测到. 2. 启用摄像头 终端输入 ...

  5. 树莓派摄像头使用Motion监测人物动作

    更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程+刷题+面经+求职+讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进入------ ...

  6. 姿态检测 树莓派_怎样在树莓派上轻松实现深度学习目标检测?

    原标题:怎样在树莓派上轻松实现深度学习目标检测? 雷锋网按:本文为 AI 研习社编译的技术博客,原标题 How to easily Detect Objects with Deep Learning ...

  7. 树莓派摄像头测距程序

    焦距=像素*距离/实际宽度. 距离=实际宽度*焦距/像素 import cv2 import time from collections import deque import numpy as np ...

  8. YOLOv3物体/目标检测之实战篇(Windows系统、Python3、TensorFlow2版本)

    前言 基于YOLO进行物体检测.对象识别,在搭建好开发环境后,先和大家进行实践应用中,体验YOLOv3物体/目标检测效果和魅力:同时逐步了解YOLOv3的不足和优化思路. 开发环境参数 系统:Wind ...

  9. 树莓派摄像头使用常用命令及代码

    检测树莓派摄像头是否可用 raspistill -o image.jpg 2592*1944分辨率 直接在终端输入 raspistill 即可查看所有 raspistill的命令选项 间隔一定时间拍摄 ...

最新文章

  1. 如何在Win7电脑上增加新磁盘分区?
  2. 修复 Vista 下 Live Messenger 联系人列表混乱
  3. iOS开发系列--UITableView全面解析
  4. notepad++ 设置编辑区域背景色为黑色
  5. redisserver是什么问题_面试官老是问:为什么采用单线程的Redis也会如此之快?...
  6. Linux守护进程列表
  7. 爱立信:5G将加速物联网发展
  8. 使用com.alibaba.fastjson.JSONObject构造简单的JSON数据
  9. 开源 微软 语音识别_能用嘴,绝不动手!支持跨屏的语音输入法,它来了!
  10. Python覆盖率分析工具_Coverage
  11. 前端对接海康威视监控
  12. 【Python脚本进阶】2.4、conficker蠕虫(中):Python脚本与Metasploit交互
  13. 【渝粤题库】陕西师范大学164210 冲突与沟通管理 作业 (专升本)
  14. 把基础打牢了,将来就可以触类旁通,行行都可以写出精彩
  15. html5 图片上传进度条,html5异步上传图片显示上传文件进度条
  16. java中怎么使用json数据_java中使用Json数据
  17. [基础库Numpy] 技能树总结:一篇文章学会Numpy库
  18. VBA-API:通过BEEP函数(扬声器)播放音乐
  19. Linux上wifi找不到网络的解决
  20. ArcGIS Pro(ArcMap)中利用自带地理处理工具实现线图层批量裁剪面图层

热门文章

  1. c语言通讯录的遇到的问题,通讯录有问题求解(cpp)
  2. 罗永浩:还可以承受无数次的失败;iOS14 或将推出系统级「小程序」功能;华为加入 OIN 社区 | EA周报...
  3. 证监计算机类专业知识,2020国考中国证监会计算机类专业考什么?
  4. 用卫星地图告诉你新疆到底有多大
  5. C语言中的hook和bait设计
  6. windows开机启动自定义程序和任务
  7. sklearn 读取csv_气象数据再分析数据的读取方式(GRIB格式为例)
  8. MSC Marc英文界面汉化
  9. MapReduce重点知识
  10. 深度学习笔记(3)——pytorch+TextCNN实现情感分类(外卖数据集)