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 结果展示

追踪结果展示

相关推荐
梨落秋霜2 小时前
Python入门篇【文件处理】
android·java·python
kisshuan123962 小时前
【深度学习】使用RetinaNet+X101-32x4d_FPN_GHM模型实现茶芽检测与识别_1
人工智能·深度学习
Java 码农2 小时前
RabbitMQ集群部署方案及配置指南03
java·python·rabbitmq
Learn Beyond Limits2 小时前
解构语义:从词向量到神经分类|Decoding Semantics: Word Vectors and Neural Classification
人工智能·算法·机器学习·ai·分类·数据挖掘·nlp
崔庆才丨静觅2 小时前
0代码生成4K高清图!ACE Data Platform × SeeDream 专属方案:小白/商家闭眼冲
人工智能·api
qq_356448373 小时前
机器学习基本概念与梯度下降
人工智能
张登杰踩3 小时前
VIA标注格式转Labelme标注格式
python
水如烟3 小时前
孤能子视角:关系性学习,“喂饭“的小孩认知
人工智能
徐_长卿3 小时前
2025保姆级微信AI群聊机器人教程:教你如何本地打造私人和群聊机器人
人工智能·机器人
XyX——3 小时前
【福利教程】一键解锁 ChatGPT / Gemini / Spotify 教育权益!TG 机器人全自动验证攻略
人工智能·chatgpt·机器人