import
numpy as np
import
cv2 as cv
cap
=
cv.VideoCapture(
'sample.mp4'
)
ret, frame
=
cap.read()
x, y, width, height
=
400
,
440
,
150
,
150
track_window
=
(x, y,
width, height)
roi
=
frame[y:y
+
height,
x : x
+
width]
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,
15
,
2
)
while
(
1
):
ret, frame
=
cap.read()
frame
=
cv.resize(frame,
(
720
,
720
),
fx
=
0
, fy
=
0
,
interpolation
=
cv.INTER_CUBIC)
cv.imshow(
'Original'
, frame)
ret1, frame1
=
cv.threshold(frame,
180
,
155
,
cv.THRESH_TOZERO_INV)
hsv
=
cv.cvtColor(frame1,
cv.COLOR_BGR2HSV)
dst
=
cv.calcBackProject([hsv],
[
0
],
roi_hist,
[
0
,
180
],
1
)
ret2, track_window
=
cv.CamShift(dst,
track_window,
term_crit)
pts
=
cv.boxPoints(ret2)
pts
=
np.int0(pts)
Result
=
cv.polylines(frame,
[pts],
True
,
(
0
,
255
,
255
),
2
)
cv.imshow(
'Camshift'
, Result)
k
=
cv.waitKey(
30
) &
0xff
if
k
=
=
27
:
break
cap.release()
cv.destroyAllWindows()