Python Opencv实践 - 视频目标追踪MeanShift

 参考资料:

opencv/python标定时用到的几个函数意义_criteria opencv_是三水不是泗水的博客-CSDN博客

python+OpenCV笔记(二十六):视频追踪(meanshift、Camshift)_cv2.meanshift_ReadyGo!!!的博客-CSDN博客

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt#打开视频
video = cv.VideoCapture("../SampleVideos/milo.mp4")
#读取第一帧图像
ret,frame = video.read()
plt.figure(figsize=(16,16))
plt.imshow(frame[:,:,::-1])
cv.imwrite("tmp.jpg", frame)#设置跟踪目标的位置(行,高,列,宽)
row,height,col,width = 650,115,350,140
obj_track_window = (col, row, width, height)
#设置ROI区域
roi = frame[row:row+height,col:col+width]
plt.imshow(roi[:,:,::-1])#计算ROI的直方图
#1. 转换到HSV色彩空间
roi_hsv = cv.cvtColor(roi, cv.COLOR_BGR2HSV)
#2. 计算ROI区域直方图
roi_hist = cv.calcHist([roi_hsv],[0],None,[180],[0,180])
#   直方图归一化
cv.normalize(roi_hist, roi_hist, 0, 255, cv.NORM_MINMAX)#进行目标追踪
#1. 设置窗口搜索终止条件:最大迭代次数,窗口中心漂移最小值
#参考资料:https://blog.csdn.net/csg3140100993/article/details/102613843
term_crit = (cv.TERM_CRITERIA_EPS|cv.TERM_CRITERIA_COUNT, 10, 1)#2. 处理每一帧
while (True):ret,frame = video.read()if ret == False:break;#计算直方图反向投影#cv.calcBackProject(image, channels, hist, ranges, scale[, dst])#image:输入图像(HSV),要用中括号[]括起来#channels:用于计算反向投影的通道列表,通道数必须与直方图的维度匹配#hist:模板图像的直方图#ranges:直方图中每个维度bin的取值范围#scale:缩放因子,一般为1#参考资料:https://www.jianshu.com/p/d0a2c70cf99ehsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)target = cv.calcBackProject([hsv],[0],roi_hist,[0,180],1)#使用MeanShit追踪#cv.meanShift(probImage, window, criteria)#probImage:ROI区域,即目标直方图的反向投影#window:初始搜索窗口,就是定义ROI的rect#criteria:确定窗口搜索停止的准则,主要有迭代次数达到设置的最大值,窗口中心的漂移值大于某个设定的限值等#参考资料:https://blog.csdn.net/qq_45832961/article/details/122627993ret,obj_track_window = cv.meanShift(target, obj_track_window, term_crit)#显示追踪矩形x,y,w,h = obj_track_windowimg_track = cv.rectangle(frame, (x,y), (x+w, y+h), (0,255,0), 2)cv.imshow('MeanShift Demo', img_track)if cv.waitKey(30) & 0xFF == ord('q'):break;video.release()
cv.destroyAllWindows()

 

 

 

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

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

相关文章

获取文件最后修改时间

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl Java源码 public void testGetFileTime() {try {String string "E://test.txt";File file new File(string);Path path file.toPath();BasicFileAttributes ba…

树结构构建,字典树快速生成。

表结构 查出list后&#xff0c;用工具类转换。工具类代码如下&#xff1a; 下面展示一些 内联代码片。 public static List<JSONObject> toTreeList(List tList, String oidkey, Stripspidkey) List<JSONObject> jsonObjectList JSONArray. parseArray (JSON.…

Leetcode—— 20.有效的括号

20. 有效的括号 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭…

Idea中使用Service管理微服务

前言 如何在本地一键启动很多个微服务&#xff0c;下面介绍下IDEA开发工具中得Services管理管理功能 一、第一步 1、在IDEA中下栏bar中如果存在Services,请看第二步。 2、如果没有请按照以下步骤打开 View -> Tool Windows -> Services 二、第二步 刚创建好的窗口是空…

千呼万唤openGauss资源池化系列培训来了

应openGauss广大用户要求&#xff0c;社区于近期推出openGauss资源池化培训系列。 关于资源池化 资源池化是openGauss 5.0.0 推出的重点特性&#xff0c;是openGauss基于内存池化和共享存储实现的数据库集群。数据在集群的计算节点内存、共享存储中实现共享。应用可以任意节点…

DLT645-2007智能电表通讯规约 协议读取数据实战

【本文发布于https://blog.csdn.net/Stack_/article/details/132946097&#xff0c;未经许可不得转载&#xff0c;转载须注明出处】 协议文档&#xff1a;DL-T 645-2007 多功能电能表通信协议 先用电表厂家提供的上位机进行通讯并拦截数据&#xff0c;再对照协议文档进行以下分…

Centos7完全离线环境安装Nvidia Tesla A100 40G显卡驱动(含CUDA Toolkit)和Anaconda3虚拟环境

公司一台完全离线环境的服务器刚装了Nvidia Tesla A100 40G显卡&#xff0c;自己摸索着将显卡驱动在完全离线环境下安装成功&#xff0c;这里记录一下。 一、下载Centos7适配的Nvidia Tesla A100 40G显卡驱动 在Nvidia官网下载Centos7适配的显卡驱动&#xff0c;CUDA Toolkit…

mybatis-plus异常:dynamic-datasource can not find primary datasource

现象 使用mybatis-plus多数据源配置时出现异常 com.baomidou.dynamic.datasource.exception.CannotFindDataSourceException: dynamic-datasource can not find primary datasource分析 异常原因是没有设置默认数据源&#xff0c;在类上没有使用DS指定数据源时&#xff0c;默…

【WSL】仅适用于装C盘情况-用WSL在win10安装LInux

研究了一点点伪分布式的内容。决定搞一个Linux系统玩一下 参考来自微软官方安装步骤&#xff1a; 旧版 WSL 的手动安装步骤 https://learn.microsoft.com/zh-cn/windows/wsl/install-manual WSL全称为&#xff0c;Windows Subsystem for Linux 法一&#xff1a;应用商店装 查…

pytest框架前后置设置,以及pytest默认规则

一、pytest框架的默认规则 1、模块名默认必须以test开头或者以test结尾 2、测试类必须以Test开头&#xff0c;并且不能有__init__方法 3、测试方法默认必须以test开头 当然以后的一些默认规则除测试类不能使用__init__方法外其余的都是可配置的&#xff0c;当然一般情况下我们…

uni-app 实现自定义按 A~Z 排序的通讯录(字母索引导航)

创建 convertPinyin.js 文件 convertPinyin.js 将下面的内容复制粘贴到其中 const pinyin (function() {let Pinyin function(ops) {this.initialize(ops);},options {checkPolyphone: false,charcase: "default"};Pinyin.fn Pinyin.prototype {init: functi…

2023年9月23日(星期六)骑行哈马者

2023年9月23日 (星期六)&#xff1a;骑行哈马者&#xff0c;早8:30到9:00&#xff0c; 穿金路和沣源路口集合&#xff0c;9:30准时出发 【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点: 穿金路和沣源路口集合&#xff0c;家住西&#xff0c;南&…