代码拉取完成,页面将自动刷新
import numpy as np
import cv2 as cv
# 获取图像
cap = cv.VideoCapture('video text.mp4')
# 获取第一帧图像,并指定目标位置
ret,frame = cap.read()
# 目标位置(行,高,列,宽)
r,h,c,w = 200, 60, 300, 100
track_window = (c,r,w,h)
# 指定目标的感兴趣区域
roi = frame[r:r+h, c:c+w]
# 计算直方图
# 转换色彩空间(HSV)
hsv_roi = cv.cvtColor(roi, cv.COLOR_BGR2HSV)
# 去除低亮度的值
mask = cv.inRange(hsv_roi, np.array((0., 60.,32.)), np.array((180.,255.,255.)))
# 计算直方图
roi_hist = cv.calcHist([hsv_roi],[0],mask,[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 ret == True:
# 计算直方图的反向投影
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
dst = cv.calcBackProject([hsv],[0],roi_hist,[0,180],1)
#进行camshift追踪
ret, track_window = cv.CamShift(dst, track_window, term_crit)
# 绘制追踪结果
pts = cv.boxPoints(ret)
pts = np.int0(pts)
img2 = cv.polylines(frame,[pts],True, 255,2)
cv.imshow('frame',img2)
if cv.waitKey(60) & 0xFF == 32:
break
else:
break
# 资源释放
cap.release()
cv.destroyAllWindows()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。