OpenCV实现视频的追踪(meanshift、Camshift)
- 互联网
- 2025-08-18 03:18:01

目录
1,meanshift
1.1 算法流程
1.2 算法实现
1.3 代码实现
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 结果展示
追踪结果展示
OpenCV实现视频的追踪(meanshift、Camshift)由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“OpenCV实现视频的追踪(meanshift、Camshift)”
上一篇
css自学框架之选项卡