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

追踪结果展示

相关推荐
劈星斩月8 小时前
计算机中的图像是什么?
计算机视觉·灰度图像·图像是什么·二值图像·彩色图像
h***04778 小时前
爬虫学习案例3
爬虫·python·学习
AI浩8 小时前
LMM-Det:让大型多模态模型在目标检测中脱颖而出
人工智能·目标检测·目标跟踪
木头左8 小时前
降维保真度权衡方差解释占比阈值对量化交易预测精度的影响分析
人工智能·机器学习·数学建模
ccLianLian8 小时前
数据挖掘·IDC-Reduction
人工智能·数据挖掘
m0_650108248 小时前
Molmo&PixMo:全开源视觉语言模型的突破之路
论文阅读·人工智能·语言模型·开源vlm·高质量多模态数据集·molmo·pixmo
唱响星河8 小时前
2025 年 AI 漫剧工具测评:一站式服务超省事
人工智能
阿杰学AI8 小时前
AI核心知识26——大语言模型之Embedding与Vector Database (简洁且通俗易懂版)
人工智能·语言模型·aigc·embedding·向量数据库·rag·vector database
openFuyao8 小时前
openFuyao两大核心项目获得GitCode G-Star认证 社区生态迈向成熟
人工智能·云原生·开源软件
Ybaocheng8 小时前
大模型第一章
人工智能·机器学习·语言模型