当前位置: 首页 > news >正文

OpenCV利用Camshift实现目标追踪

目录

原理

做法

代码实现

结果展示


原理

做法

代码实现

import numpy as np
import cv2 as cv# 读取视频
cap = cv.VideoCapture('video.mp4')# 检查视频是否成功打开
if not cap.isOpened():print("Error: Cannot open video file.")exit()# 获取第一帧图像,并指定目标位置
ret, frame = cap.read()# 目标位置
x, y, w, h = 960,500, 100, 100
track_window = (x, y, w, h)# 指定目标的感兴趣区域
roi = frame[y:y+h, x:x+w]# 转换感兴趣区域的颜色空间(HSV)
hsv_roi = cv.cvtColor(roi, cv.COLOR_BGR2HSV)# 计算感兴趣区域的直方图
roi_hist = cv.calcHist([hsv_roi], [0], None, [180], [0, 180])# 归一化直方图
cv.normalize(roi_hist, roi_hist, 0, 255, cv.NORM_MINMAX)# 设置目标追踪的停止条件
term_crit = (cv.TERM_CRITERIA_EPS | cv.TERM_CRITERIA_COUNT, 10, 1)while True:# 获取每一帧图像ret, frame = cap.read()if not ret:break# 转换当前帧的颜色空间(HSV)hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)# 计算直方图的反向投影dst = cv.calcBackProject([hsv], [0], roi_hist, [0, 180], 1)# 使用meanshift追踪ret, track_window = cv.CamShift(dst, track_window, term_crit)# 绘制追踪结果pts = cv.boxPoints(ret)pts = np.int0(pts)img2 = cv.polylines(frame, [pts],True,255,2)cv.imshow('frame', img2)if cv.waitKey(60) & 0xFF == ord('q'):breakcap.release()
cv.destroyAllWindows()

结果展示

追踪结果1

http://www.lryc.cn/news/184572.html

相关文章:

  • 使用pywin32读取doc文档的方法及run输出乱码 \r\x07
  • 一天一八股——TCP保活keepalive和HTTP的Keep-Alive
  • 头部品牌停业整顿,鲜花电商的中场战事迎来拐点?
  • 深入解读redis的zset和跳表【源码分析】
  • elasticsearch内存占用详细分析
  • 【研究生学术英语读写教程翻译 中国科学院大学Unit3】
  • 基于虚拟同步发电机控制的双机并联Simulink仿真模型
  • 微信小程序开发——自定义堆叠图
  • 国庆day5
  • 经典算法----迷宫问题(找出所有路径)
  • macOS下 /etc/hosts 文件权限问题修复方案
  • 【星海出品】ansible入门(二) playbook
  • Spring Boot对账号密码进行加密储存
  • 总结js中常见的层次选择器
  • 阿里云ECS服务器上启动的portainer无法访问的问题
  • JavaScript系列从入门到精通系列第十八篇:JavaScript中的函数作用域
  • 开环模块化多电平换流器仿真(MMC)N=6(Simulink仿真)
  • [C]嵌入式中变量存储方案
  • 热迁移中VirtIO-PCI设备的配置空间处理
  • 模拟滤波器的基础知识和设计
  • 机器学习基础-Pandas学习笔记
  • 【GIT版本控制】--协作流程
  • 简析Cookie、Session、Token
  • 加速attention计算的工业标准:flash attention 1和2算法的原理及实现
  • 小程序获取用户手机号
  • Zama的fhEVM:基于全同态加密实现的隐私智能合约
  • Mac M1安装ROS1或ROS2
  • [NISACTF 2022]popchains - 反序列化+伪协议
  • 分贝定义简介
  • socket简介