Files
2026-03-31 13:28:59 +02:00

53 lines
1.5 KiB
Python

import cv2
import numpy as np
import common
color_infos=(0, 0, 255)
xmin=90
xmax=510
ymin=315
ymax=360
video='autoroute.mp4'
nbr_old=0
vehicule=0
seuil=10
fond=common.moyenne_image(video, 500)
fond=fond[ymin:ymax, xmin:xmax]
cv2.imshow('fond', fond.astype(np.uint8))
fond=fond.astype(np.int32)
cap=cv2.VideoCapture(video)
while True:
ret, frame=cap.read()
tickmark=cv2.getTickCount()
mask=common.calcul_mask(frame[ymin:ymax, xmin:xmax], fond, seuil)
elements=cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
nbr=0
for e in elements:
((x, y), rayon)=cv2.minEnclosingCircle(e)
if rayon>20:
cv2.circle(frame, (int(x)+xmin, int(y)+ymin), 5, color_infos, 10)
nbr+=1
if nbr>nbr_old:
vehicule+=1
nbr_old=nbr
fps=cv2.getTickFrequency()/(cv2.getTickCount()-tickmark)
cv2.putText(frame, "FPS: {:05.2f} Seuil: {:d}".format(fps, seuil), (10, 30), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, color_infos, 1)
cv2.rectangle(frame, (xmin, ymin), (xmax+120, ymax), (255, 0, 0), 5)
cv2.rectangle(frame, (xmax, ymin), (xmax+120, ymax), (255, 0, 0), cv2.FILLED)
cv2.putText(frame, "{:04d}".format(vehicule), (xmax+10, ymin+35), cv2.FONT_HERSHEY_COMPLEX_SMALL, 2, (255, 255, 255), 2)
cv2.imshow('video', frame)
cv2.imshow('mask', mask)
key=cv2.waitKey(1)&0xFF
if key==ord('q'):
break
if key==ord('p'):
seuil+=1
if key==ord('m'):
seuil-=1
cap.release()
cv2.destroyAllWindows()