36 lines
1021 B
Python
36 lines
1021 B
Python
|
|
import cv2
|
||
|
|
from Detector import detect_inrange, detect_visage
|
||
|
|
from KalmanFilter import KalmanFilter
|
||
|
|
import numpy as np
|
||
|
|
|
||
|
|
VideoCap=cv2.VideoCapture(0)
|
||
|
|
|
||
|
|
KF=KalmanFilter(0.1, [0, 0])
|
||
|
|
|
||
|
|
while(True):
|
||
|
|
ret, frame=VideoCap.read()
|
||
|
|
|
||
|
|
points, mask=detect_inrange(frame, 800)
|
||
|
|
#points, mask=detect_visage(frame)
|
||
|
|
|
||
|
|
etat=KF.predict().astype(np.int32)
|
||
|
|
|
||
|
|
cv2.circle(frame, (int(etat[0]), int(etat[1])), 2, (0, 255, 0), 5)
|
||
|
|
cv2.arrowedLine(frame,
|
||
|
|
(etat[0], etat[1]), (etat[0]+etat[2], etat[1]+etat[3]),
|
||
|
|
color=(0, 255, 0),
|
||
|
|
thickness=3,
|
||
|
|
tipLength=0.2)
|
||
|
|
if (len(points)>0):
|
||
|
|
cv2.circle(frame, (points[0][0], points[0][1]), 10, (0, 0, 255), 2)
|
||
|
|
KF.update(np.expand_dims(points[0], axis=-1))
|
||
|
|
|
||
|
|
cv2.imshow('image', frame)
|
||
|
|
if mask is not None:
|
||
|
|
cv2.imshow('mask', mask)
|
||
|
|
|
||
|
|
if cv2.waitKey(1)&0xFF==ord('q'):
|
||
|
|
VideoCap.release()
|
||
|
|
cv2.destroyAllWindows()
|
||
|
|
break
|