-
Notifications
You must be signed in to change notification settings - Fork 1
/
tracking_meanshift.py
37 lines (29 loc) · 1.51 KB
/
tracking_meanshift.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import cv2
import numpy as np
cap = cv2.VideoCapture(r'I:\downloadly\Udemy – Python for Computer Vision with OpenCV and Deep Learning 2021-3\Udemy - Python for Computer Vision with OpenCV and Deep Learning 2021-3\1 - Course Overview and Introduction\Computer-Vision-with-Python\DATA\video_capture.mp4')
ret , frame = cap.read()
face_cascade = cv2.CascadeClassifier(r'I:\downloadly\Udemy – Python for Computer Vision with OpenCV and Deep Learning 2021-3\Udemy - Python for Computer Vision with OpenCV and Deep Learning 2021-3\1 - Course Overview and Introduction\Computer-Vision-with-Python\DATA\haarcascades\haarcascade_frontalface_default.xml')
face_rects = face_cascade.detectMultiScale(frame)
(face_x,face_y,w,h) = tuple(face_rects[0])
track_window = (face_x,face_y,w,h)
roi = frame[face_y:face_y+h, face_x:face_x+w]
hsv_roi = cv2.cvtColor(roi,cv2.COLOR_BGR2HSV)
roi_hist = cv2.calcHist([hsv_roi],[0],None,180,[0,180])
cv2.normalize(roi_hist,roi_hist, 0,255,cv2.NORM_MINMAX)
term_crit = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT,10,1)
while True:
ret , frame = cap.read()
if ret:
hsv= cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
dst = cv2.calcBackProject([hsv],[0],roi_hist,[0,180],1)
ret , track_window = cv2.meanShift(dst,track_window,term_crit)
x,y,w,h = track_window
img2 = cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),5)
cv2.imshow('img',img2)
k = cv2.waitKey(1) & 0xFF
if k==27:
break
else:
break
cv2.destroyAllWindows()
cap.release()