【python】OpenCV—Tracking(10.2)

devtools/2024/9/24 13:31:31/

在这里插入图片描述

文章目录

  • BackgroundSubtractor
  • createBackgroundSubtractorMOG2
  • createBackgroundSubtractorKNN

BackgroundSubtractor

Opencv 有三种背景分割器

  • K-Nearest:KNN

  • Mixture of Gaussian(MOG2

  • Geometric Multigid(GMG)

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

MOG2_17">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.ppmy.cn/devtools/46432.html

相关文章

Day07 待办事项功能页面设计

​ 当前章节待办事项页面设计最终效果图: 一.布局设计 整个 待办事项页面 主要分上下布局,也就是分2行进行设计。第1 行 放搜索框和添加待办按钮,第2行 放置待办事项的内容。 那么 在视图中,怎么将页面分上下2行?就使用到Grid中 的 Grid.RowDefinitions ,就能实现将页面分…

OJ题目【栈和队列】

题目导入 栈: 题目一:有效的括号题目二:用栈实现队列 队列 题目:实现循环队列 栈 题目一 有效的括号 题目要求 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘…

向量化:机器学习中的效率加速器与数据桥梁

在机器学习领域的广袤天地中,向量化技术以其独特的魅力,为数据处理和模型训练注入了强大的动力。本文将深入探讨向量化在机器学习领域中的体现,剖析其如何助力模型实现高效的数据处理和精确的结果预测,并通过丰富的案例和详尽的数…

ctfshow unserialize

开始反序列化 web255 是从cookie中unserialize得到实例,考虑修改cookie中键user的值 $result urlencode(serialize(new ctfShowUser())); 为何需要url编码呢,不url编码也能成。url编码是对称加密,编码也不影响 web256 考察!不完全等于&…

C++面向对象程序设计 - 标准输出流

在C中,标准输出流通常指的是与标准输出设备(通常是终端或控制台)相关联的流对象。这个流对象在C标准库中被定义为std::cout、std::err、std::clog,它们是std::ostream类的一个实例。 一、cout,cerr和clog流 ostream类…

【算法】过桥

✨题目链接: 过桥 ✨题目描述 ✨输入描述: 第一行一个数n(2≤n≤2000) 接下来一行n个数a[i](1≤|a[i]|≤2000)表示浮块上的数字 ✨输出描述: 输出一行,表示对应的答案 ✨示例1 📍输入 4 2 2 -1 2 📍输出 2 📍说明 1…

香橙派OrangePi AIpro,助力国产AIoT迈向新的台阶!

前言:很高兴受邀CSDN与OrangePi官方组织的测评活动,本次测评是一块基于AI边缘计算的香橙派开发板OrangePi AIpro。这是 香橙派 联合 华为昇腾 合作精心打造的新一代边缘AI计算产品,于2023年12月初发布,提供 8/20TOPS澎湃算力[1]&a…

第七在线惊艳亮相第11届奥莱峰会,AI驱动零售供应链升级

2024年5月22-24日,第11届奥莱领秀峰会暨2024奥莱产业经济论坛在南京盛大举行。论坛上,智能商品计划管理系统服务商第七在线凭借富有前瞻性的AI技术,引领零售供应链迈入全新升级阶段,赢得了与会嘉宾的广泛关注与赞誉。 峰会由中国奥…