本文实例为大家分享了python+opencv实现移动侦测的具体代码,供大家参考,具体内容如下

1.帧差法原理

移动侦测即是根据视频每帧或者几帧之间像素的差异,对差异值设置阈值,筛选大于阈值的像素点,做掩模图即可选出视频中存在变化的桢。帧差法较为简单的视频中物体移动侦测,帧差法分为:单帧差、两桢差、和三桢差。随着帧数的增加是防止检测结果的重影。

2.算法思路

文章以截取视频为例进行单帧差法移动侦测

3.python实现代码

def threh(video,save_video,thres1,area_threh):

cam = cv2.VideoCapture(video)#打开一个视频

input_fps = cam.get(cv2.CAP_PROP_FPS)

ret_val, input_image = cam.read()

index=[]

images=[]

images.append(input_image)

video_length = int(cam.get(cv2.CAP_PROP_FRAME_COUNT))

input_image=cv2.resize(input_image,(512,512))

ending_frame = video_length

fourcc = cv2.VideoWriter_fourcc(*'XVID')

out = cv2.VideoWriter(save_video,fourcc, input_fps, (512, 512))

gray_lwpCV = cv2.cvtColor(input_image, cv2.COLOR_BGR2GRAY)

gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21), 0)

background=gray_lwpCV

# es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (9, 4))

i = 0 # default is 0

outt=[]

while(cam.isOpened()) and ret_val == True and i <2999:

## if i % 2==1:

ret_val, input_image = cam.read()

input_image=cv2.resize(input_image,(512,512))

gray_lwpCV = cv2.cvtColor(input_image, cv2.COLOR_BGR2GRAY)

gray_lwpCV = cv2.GaussianBlur(gray_lwpCV, (21, 21), 0)

diff = cv2.absdiff(background, gray_lwpCV)

outt.append(diff)

#跟着图像变换背景

tem_diff=diff.flatten()

tem_ds=pd.Series(tem_diff)

tem_per=1-len(tem_ds[tem_ds==0])/len(tem_ds)

if (tem_per <0.2 )| (tem_per>0.75):

background=gray_lwpCV

else:

diff = cv2.threshold(diff, thres1, 255, cv2.THRESH_BINARY)[1]

ret,thresh = cv2.threshold(diff.copy(),150,255,0)

contours, hierarchy = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

# contours, hierarchy = cv2.findContours(diff.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

for c in contours:

if (cv2.contourArea(c) < area_threh) | (cv2.contourArea(c) >int(512*512*0.3) ) : # 对于矩形区域,只显示大于给定阈值的轮廓(去除微小的变化等噪点)

continue

(x, y, w, h) = cv2.boundingRect(c) # 该函数计算矩形的边界框

cv2.rectangle(input_image, (x, y), (x+w, y+h), (0, 255, 0), 2)

index.append(i)

# cv2.imshow('contours', input_image)

# cv2.imshow('dis', diff)

out.write(input_image)

images.append(input_image)

i = i+1

out.release()

cam.release()

return outt,index,images```

##调取函数

outt=threh('new_video.mp4','test6.mp4',25,3000)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python识别重影验证码_python+opencv实现移动侦测(帧差法)相关推荐

  1. opencv进阶-背景建模-(帧差法与混合高斯模型)

    背景减除(Background Subtraction)是许多基于计算机视觉的任务中的主要预处理步骤.如果我们有完整的静止的背景帧,那么我们可以通过帧差法来计算像素差从而获取到前景对象.但是在大多数情 ...

  2. python 识别图形验证码_Python验证码识别

    大致介绍 在python爬虫爬取某些网站的验证码的时候可能会遇到验证码识别的问题,现在的验证码大多分为四类: 1.计算验证码 2.滑块验证码 3.识图验证码 4.语音验证码 这篇博客主要写的就是识图验 ...

  3. python 识别图形验证码_Python图片验证码降噪处理实例!此乃识别验证码神技!...

    图片验证码算是网络数据采集上的一道拦路虎,虽然有诸多公开的ORC接口.云打码平台,一旦大规模应用起来,还是内部写程序进行识别处理比较好. 而自己写代码进行识别的话,又有很多种方案,比如最近火热的神经网 ...

  4. python识别中文验证码_Python实现验证码识别

    大致介绍 在python爬虫爬取某些网站的验证码的时候可能会遇到验证码识别的问题,现在的验证码大多分为四类: 1.计算验证码 2.滑块验证码 3.识图验证码 4.语音验证码 这篇博客主要写的就是识图验 ...

  5. python 识别图形验证码_python爬虫20 | 小帅b教你如何用python识别图片验证码

    当你在爬取某些网站的时候 对于你的一些频繁请求 对方会阻碍你 常见的方式就是使用验证码 验证码的主要功能 就是区分你是人还是鬼(机器人) 人 想法设法的搞一些手段来对付技术 而 技术又能对付人们的想法 ...

  6. python识别12306验证码_Python 识别12306图片验证码物品的实现示例

    1.PIL介绍以及图片分割 Python 3 安装:  pip3 install Pillow 1.1 image 模块 Image模块是在Python PIL图像处理中常见的模块,主要是用于对这个图 ...

  7. python识别中文验证码_Python识别简单验证码

    12.1 更新 已经有完整的代码了 ======================================= 新手, 多多指教 大概思路: 1. 转换图片为黑白, 2. 去除干扰, 3. 切割, ...

  8. python识别图片中数字_Python Opencv识别两张相似图片

    在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在本文简 ...

  9. python识别图片中方框_Python+Opencv实现鼠标在图片上取色

    1.实现效果: 左边是Python代码的运行界面.可以看到在输出行有[249 221 187]三个数字,因为我在右侧的图片上点击了某个区域,因此就输出了所点击区域的RGB颜色.RGB颜色就是三原色,三 ...

最新文章

  1. 祝贺!屠呦呦再获国际大奖!一文读懂:神药青蒿素那些我们不知道的事
  2. VS2008资源问题解决方法
  3. Library reports error: __use_no_semihosting was requested, but _tty
  4. 语言zzuli链表遍历_趣味图解算法之链表
  5. wxWidgets随笔(3)-hello,world
  6. 【tomcat】catalina.home catalina.base 区别
  7. wxPython布局管理
  8. 【Kafka】Kafka connection to node 0 failed authentication due to SSL handshake failed
  9. 7wifi模块多少钱_APP开发要多少钱?创业者估算成本的四个方法
  10. Linux中log打印输入输出的格式字符串
  11. 威信游戏小程序源码-合成大西瓜小游戏(合成版)源码 附带流量主功能
  12. Verilog语言语句介绍
  13. 如何打造有战斗力的团队
  14. 64位开源处理器Rocket的源代码简单介绍
  15. Dev C++ 下载地址和安装教程
  16. 机器学习数据挖掘笔记_18(PGM练习二:贝叶斯网络在遗传图谱在的应用)
  17. iPad是真正的移动设备吗?
  18. 电脑c盘分区太小如何可以扩大,电脑c盘不够用了,如何给电脑分区
  19. 【项目实战】Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
  20. 第一周,人工智能学习总结

热门文章

  1. 二硫化锡/纳米碳/MXene/PANI复合材料研究进展
  2. 1698无法登录mysql服务器,Mysql ERROR 1698 (28000) 解决
  3. 集团化企业的电子印章管理模式
  4. 英语考研——目的状语从句
  5. CVPR2020 3D点云相关论文思想和方法总结
  6. 借助python用Tushare查询股票价格并存入Mysql数据库中
  7. 西电微机系统课程设计步进电机开环控制系统
  8. 信息安全技术实验PGP邮件加密系统工具下载过程记录
  9. ijkplayer播放器架构从原型到升级
  10. 用户在图片上点选并标记位置,js实现