OpenCV实现视频的追踪(meanshift、Camshift)

目录

1,meanshift

[1.1 算法流程](#1.1 算法流程)

[1.2 算法实现](#1.2 算法实现)

[1.3 代码实现](#1.3 代码实现)

[1.4 结果展示](#1.4 结果展示)


1,meanshift

1.1 算法流程

1.2 算法实现

1.3 代码实现

复制代码
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.meanShift(dst, track_window, term_crit)

    # 获取追踪后的位置并在图像上绘制矩形
    x, y, w, h = track_window
    img2 = cv.rectangle(frame, (x, y), (x+w, y+h), 255, 2)
    cv.imshow('frame', img2)

    if cv.waitKey(60) & 0xFF == ord('q'):
        break

cap.release()
cv.destroyAllWindows()

1.4 结果展示

追踪结果展示

相关推荐
Victory_orsh30 分钟前
“自然搞懂”深度学习系列(基于Pytorch架构)——02小试牛刀
人工智能·python·深度学习·神经网络·机器学习
tzc_fly33 分钟前
DeepSeek-OCR:上下文光学压缩
人工智能·计算机视觉·ocr
Bruce-li__35 分钟前
CI/CD流水线全解析:从概念到实践,结合Python项目实战
开发语言·python·ci/cd
37手游后端团队35 分钟前
构建AI会话质检平台:技术架构与实践分享
人工智能·后端
哔哩哔哩技术43 分钟前
B站游戏大模型翻译实践 —— 我们如何用LLM撑起全年百万字本地化翻译任务
人工智能
longgyy44 分钟前
AI 开发告别 “孤岛”:MCP + 火山引擎
人工智能·火山引擎
珊瑚礁的猪猪侠1 小时前
正则表达式入门到精通教程(Linux实操版)
linux·人工智能·正则表达式
星空的资源小屋1 小时前
MkFont,一款开源免费的字体设计工具
网络·人工智能·pdf·电脑
mir frog1 小时前
DAY44 PYTHON 预训练模型
人工智能·深度学习·机器学习
yuzhuanhei1 小时前
机器学习算法常用算法
人工智能·算法·机器学习