importnumpyasnpimportcv2ascv# Read the input videocap=cv.VideoCapture('sample.mp4')# take first frame of the# videoret,frame=cap.read()# setup initial region of# trackerx,y,width,height=400,440,150,150track_window=(x,y,width,height)# set up the Region of# Interest for trackingroi=frame[y:y+height,x:x+width]# convert ROI from BGR to# HSV formathsv_roi=cv.cvtColor(roi,cv.COLOR_BGR2HSV)# perform masking operationmask=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)# Setup the termination criteria,# either 15 iteration or move by# atleast 2 ptterm_crit=(cv.TERM_CRITERIA_EPS|cv.TERM_CRITERIA_COUNT,15,2)while(1):ret,frame=cap.read()# Resize the video frames.frame=cv.resize(frame,(720,720),fx=0,fy=0,interpolation=cv.INTER_CUBIC)cv.imshow('Original',frame)# perform thresholding on# the video framesret1,frame1=cv.threshold(frame,180,155,cv.THRESH_TOZERO_INV)# convert from BGR to HSV# format.hsv=cv.cvtColor(frame1,cv.COLOR_BGR2HSV)dst=cv.calcBackProject([hsv],[0],roi_hist,[0,180],1)# apply Camshift to get the# new locationret2,track_window=cv.CamShift(dst,track_window,term_crit)# Draw it on imagepts=cv.boxPoints(ret2)# convert from floating# to integerpts=np.int0(pts)# Draw Tracking window on the# video frame.Result=cv.polylines(frame,[pts],True,(0,255,255),2)cv.imshow('Camshift',Result)# set ESC key as the# exit button.k=cv.waitKey(30)&0xffifk==27:break# Release the cap objectcap.release()# close all opened windowscv.destroyAllWindows()