python-opencv【图像处理-目标跟踪camshift】

一级标题(camshift)

在meanshift中存在的问题是,检测窗口是大小不变的,而检测目标在视屏中的位置和大小是在改变的,所以camshift算法,自动调整检测窗口的大小,来适应目标大小的变化。
代码:

import cv2 as cv
import numpy as np
import  matplotlib.pyplot as plot



cap=cv.VideoCapture(r"C:\Users\Windows\Desktop\mda-pbcasfstj9kkym08.mp4")
ret,frame=cap.read()
r,h,c,w=200,400,95,400
win=(c,r,w,h)
roi=frame[r:r+h,c:c+w]
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=(cv.TERM_CRITERIA_EPS|cv.TERM_CRITERIA_COUNT,10,1)
while(True):
    ret,frame=cap.read()
    if ret==True:
        hst=cv.cvtColor(frame,cv.COLOR_BGR2HSV)
        dst=cv.calcBackProject([hst],[0],roi_hist,[0,180],1)
        ret,win=cv.CamShift(dst,win,term)
        pts=cv.boxPoints(ret)
        pts=np.int0(pts)
        img2=cv.polylines(frame,[pts],True,(0,255,0),2)
        cv.imshow("frame",frame)
        if cv.waitKey(50)&0xFF==ord('q'):
            break
cv.release()
cv.destroyAllWindows()

代码在meanshift算法代码的基础上,将meanshift替换为camshift,再将绘图函数进行替换即可。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值