检测有没有物体移动

import cv2
import timecamera = cv2.VideoCapture(0)
if camera is None:print('请先连接摄像头')exit()fps = 5 # 帧率
pre_frame = None  # 总是取前一帧做为背景(不用考虑环境影响)

play_music = 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.imshow('img', cur_frame)key = cv2.waitKey(30) & 0xffif key == 27:breakgray_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: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)image, contours, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)for c in contours:if cv2.contourArea(c) < 1000: # 设置敏感度continueelse:#print(cv2.contourArea(c))print("前一帧和当前帧不一样了, 有什么东西在动!")play_music = Truebreakpre_frame = gray_imgcamera.release()
cv2.destroyAllWindows()

加入人脸识别

import cv2
import timesave_path = './face/'
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')camera = cv2.VideoCapture(0) # 参数0表示第一个摄像头# 判断视频是否打开
if (camera.isOpened()):print('Open')
else:print('摄像头未打开')# 测试用,查看视频size
size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)),int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT)))
print('size:'+repr(size))fps = 5  # 帧率
pre_frame = None  # 总是取视频流前一帧做为背景相对下一帧进行比较
i = 0
while True:start = time.time()grabbed, frame_lwpCV = camera.read() # 读取视频流gray_lwpCV = cv2.cvtColor(frame_lwpCV, cv2.COLOR_BGR2GRAY) # 转灰度图if not grabbed:breakend = time.time()# 人脸检测部分faces = face_cascade.detectMultiScale(gray_lwpCV, 1.3, 5)for (x, y, w, h) in faces:cv2.rectangle(frame_lwpCV, (x, y), (x + w, y + h), (255, 0, 0), 2)roi_gray_lwpCV = gray_lwpCV[y:y + h // 2, x:x + w] # 检出人脸区域后,取上半部分,因为眼睛在上边啊,这样精度会高一些roi_frame_lwpCV = frame_lwpCV[y:y + h // 2, x:x + w]cv2.imwrite(save_path + str(i) + '.jpg', frame_lwpCV[y:y + h, x:x + w]) # 将检测到的人脸写入文件i += 1eyes = eye_cascade.detectMultiScale(roi_gray_lwpCV, 1.03, 5) # 在人脸区域继续检测眼睛for (ex, ey, ew, eh) in eyes:cv2.rectangle(roi_frame_lwpCV, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)cv2.imshow('lwpCVWindow', frame_lwpCV)# 运动检测部分seconds = end - startif seconds < 1.0 / fps:time.sleep(1.0 / fps - seconds)gray_lwpCV = cv2.resize(gray_lwpCV, (500, 500))# 用高斯滤波进行模糊处理,进行处理的原因:每个输入的视频都会因自然震动、光照变化或者摄像头本身等原因而产生噪声。对噪声进行平滑是为了避免在运动和跟踪时将其检测出来。gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21), 0) # 在完成对帧的灰度转换和平滑后,就可计算与背景帧的差异,并得到一个差分图(different map)。还需要应用阈值来得到一幅黑白图像,并通过下面代码来膨胀(dilate)图像,从而对孔(hole)和缺陷(imperfection)进行归一化处理if pre_frame is None:pre_frame = gray_lwpCVelse:img_delta = cv2.absdiff(pre_frame, gray_lwpCV)thresh = cv2.threshold(img_delta, 25, 255, cv2.THRESH_BINARY)[1]thresh = cv2.dilate(thresh, None, iterations=2)image, contours, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)for c in contours:if cv2.contourArea(c) < 1000: # 设置敏感度continueelse:print("咦,有什么东西在动")breakpre_frame = gray_lwpCVkey = cv2.waitKey(1) & 0xFF# 按'q'健退出循环if key == ord('q'):break
# When everything done, release the capture
camera.release()
cv2.destroyAllWindows()

用同事做了一下实验,hahahahhhh

附件

https://files.cnblogs.com/files/botoo/%E6%96%87%E4%BB%B6.rar

转载于:https://www.cnblogs.com/botoo/p/9722155.html

【树莓派编程】检测有没有物体移动 +人脸识别相关推荐

  1. 树莓派人脸识别_童话树莓派|(十一)进入AI世界人脸识别(防疫检测)

    童话树莓派 第十一集-进入AI世界-人脸识别(防疫检测) [人脸识别+口罩检测] 小朋友们,很快又见面了 今天我们继续进入AI人工智能世界,探寻人脸识别的奥秘 你看起来多少岁呢? 你看起来是男的还是女 ...

  2. dlib库包的介绍与使用,opencv+dlib检测人脸框、opencv+dlib进行人脸68关键点检测,opencv+dlib实现人脸识别,dlib进行人脸特征聚类、dlib视频目标跟踪

    文章目录: 1 dlib库介绍 2 dlib人脸检测:绘制出人脸检测框 2.1 dlib人脸检测源码 2.2 opencv + dlib 人脸检测 2.3 dlib人脸检测总结 3 dlib人脸关键点 ...

  3. MTCNN人脸检测与对齐和FaceNet人脸识别

    一 MTCNN算法结构 MTCNN算法是一种基于深度学习的人脸检测和人脸对齐方法,它可以同时完成人脸检测和人脸对齐的任务,相比于传统的算法,它的性能更好,检测速度更快. MTCNN算法包含三个子网络: ...

  4. 基于android系统的人脸检测系统设计 论文,基于Android人脸识别系统设计与实现.doc...

    基于Android人脸识别系统设计与实现 基于Android人脸识别系统设计与实现 摘要:人脸识别是公共安全领域的研究重点.随着移动互联网的快速发展,移动式终端人脸识别应用日益广泛.探讨人脸识别在An ...

  5. 人脸检测概述(不是人脸识别)

    目录 1  引言... 3 2  人脸检测技术的发展与现状... 4 3  人脸检测算法相关工作... 4 3.1  评价指标... 5 3.2  人脸检测常用数据库... 6 3.2.1  FDDB ...

  6. 基于haar+adaboost的人脸检测、深度学习的人脸识别技术应用综述

    版权声明:本文为博主原创文章,未经博主允许不得转载.欢迎交流,QQ:896922782,微信:15058133936 目录 第一节 核心技术 3 一.人脸检测 3 二.特征点检测 5 三.人脸归一化 ...

  7. android 活体检测方案,一种基于人脸识别认证的Android红外双目活体检测的制作方法...

    本发明涉及人脸识别领域,具体涉及一种基于人脸识别认证的Android红外双目活体检测. 背景技术: 在目前的利用红外线实现双目活体检测的技术中,普通红外双目,能够同时实时采集近红外和可见光两种图像,并 ...

  8. 应用人脸活体检测技术,可避免人脸识别系统被攻击

    人脸识别技术是近年来出现的一种基于人的脸部特征信息进行身份识别的生物特征识别技术.与其他生物识别技术相比较,人脸识别具有友好.简便.准确.经济及可扩展性良好等众多优势,可广泛应用于安全验证.监控.出入 ...

  9. 活体检测-用照片来做人脸识别可行吗?

    随着科技的迅速发展,智能化也越来越发达,并慢慢进入到我们日常生活中来了.如考勤 早期是人工记录,签到,然后是打卡,刷卡,再到指纹.现在已经发展到更加先进的人脸识别考勤了. 卡可以代打,代刷,但是牵涉到 ...

最新文章

  1. mysql pma用户_MYSQL用户权限管理学习笔记
  2. WinForm实现窗体最小化后小图标在右边任务栏下
  3. html5shiv.js css3,Modernizr, html5shiv, ie7.js, and CSS3 Pie. Which to use and when?
  4. HDFS Erasure Coding介绍
  5. CodeForces - 1521B Nastia and a Good Array
  6. java的socket编程---telnet客户端的实现
  7. 10小时,就能吃透Kafka源码?
  8. PHP 多维数组转换一维数组
  9. PHP面试题(二)---百度
  10. python爬虫微博热搜_微博热搜榜数据爬虫采集 - 八爪鱼采集器
  11. Linux内核4.14版本——GPIO子系统(2)——gpio control driver分析
  12. CGROUP CFS 调度中的 period,burst 概念
  13. 佳能2900打印机与win10不兼容_windows10系统64位如何安装佳能LBP2900驱动?
  14. 没有 本地计算机策略组,本地组策略编辑器没有mmc
  15. 二次规划及qpoases简要介绍
  16. Kotlin 从入门到实战(一)
  17. 十二、动态座位响应及用户订票《仿淘票票系统前后端完全制作(除支付外)》
  18. 微距昆虫摄影的常用技巧
  19. 解决deepin更换输入法之后系统报错、出现bug的问题
  20. 大厂架构师之路8. 创业 - 做销售

热门文章

  1. 多个局域网共享DHCP服务器
  2. python一加到二十_46 python学习笔记
  3. re.compile与sub
  4. android 文件并发读写,Android下,rxJava+retrofit 并发上传文件和串行上传文件的效率为什么差不多?...
  5. shell 获取ora报错信息_ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析...
  6. java 静态方法中为什么不可以使用关键字this _super_Java static方法里为什么不能使用this关键字,和Super...
  7. 已知gcd和lcm求a+b最小和?------数论
  8. android分享的主标题,Android 自定义标题栏(title栏)
  9. 《系统集成项目管理工程师》必背100个知识点-22实施整体变更ITTO
  10. centos7 glpi 安装 Fusioninventory-agent 自测部署安装