38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
import cv2
|
|
import numpy as np
|
|
# Tuto25[OpenCV] Lecture des panneaux de vitesse p.1 (houghcircles) 14min
|
|
param1=30
|
|
param2=55
|
|
dp=1.0
|
|
video_path = "server-ia/data/videos/ville.mp4"
|
|
|
|
cap=cv2.VideoCapture(video_path)
|
|
|
|
while True:
|
|
ret, frame=cap.read()
|
|
gray=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
|
circles=cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, dp, 20, param1=param1, param2=param2, minRadius=10, maxRadius=50)
|
|
if circles is not None:
|
|
circles=np.around(circles).astype(np.int32)
|
|
for i in circles[0, :]:
|
|
if i[2]!=0:
|
|
cv2.circle(frame, (i[0], i[1]), i[2], (0, 255, 0), 4)
|
|
cv2.putText(frame, "[i|k]dp: {:4.2f} [o|l]param1: {:d} [p|m]param2: {:d}".format(dp, param1, param2), (10, 40), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (255, 0, 0), 1)
|
|
cv2.imshow("Video", frame)
|
|
key=cv2.waitKey(1)&0xFF
|
|
if key==ord('q'):
|
|
quit()
|
|
if key==ord('i'):
|
|
dp=min(10, dp+0.1)
|
|
if key==ord('k'):
|
|
dp=max(0.1, dp-0.1)
|
|
if key==ord('o'):
|
|
param1=min(255, param1+1)
|
|
if key==ord('l'):
|
|
param1=max(1, param1-1)
|
|
if key==ord('p'):
|
|
param2=min(255, param2+1)
|
|
if key==ord('m'):
|
|
param2=max(1, param2-1)
|
|
cv2.destroyAllWindows()
|