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

追踪结果展示

相关推荐
华玥作者1 天前
[特殊字符] VitePress 对接 Algolia AI 问答(DocSearch + AI Search)完整实战(下)
前端·人工智能·ai
AAD555888991 天前
YOLO11-EfficientRepBiPAN载重汽车轮胎热成像检测与分类_3
人工智能·分类·数据挖掘
王建文go1 天前
RAG(宠物健康AI)
人工智能·宠物·rag
ALINX技术博客1 天前
【202601芯动态】全球 FPGA 异构热潮,ALINX 高性能异构新品预告
人工智能·fpga开发·gpu算力·fpga
易营宝1 天前
多语言网站建设避坑指南:既要“数据同步”,又能“按市场个性化”,别踩这 5 个坑
大数据·人工智能
春日见1 天前
vscode代码无法跳转
大数据·人工智能·深度学习·elasticsearch·搜索引擎
Drgfd1 天前
真智能 vs 伪智能:天选 WE H7 Lite 用 AI 人脸识别 + 呼吸灯带,重新定义智能化充电桩
人工智能·智能充电桩·家用充电桩·充电桩推荐
好家伙VCC1 天前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
萤丰信息1 天前
AI 筑基・生态共荣:智慧园区的价值重构与未来新途
大数据·运维·人工智能·科技·智慧城市·智慧园区
盖雅工场1 天前
排班+成本双管控,餐饮零售精细化运营破局
人工智能·零售餐饮·ai智能排班