From 0dda143b9cd10a65d1992022b67e302b24a5e14d Mon Sep 17 00:00:00 2001 From: Philippe Roy Date: Sat, 14 Oct 2023 19:23:38 +0200 Subject: [PATCH] =?UTF-8?q?D=C3=A9tection=20de=20la=20bille?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labyrinthe/6-jumeaux/test/cam_bille-test.py | 43 +++++++++++++++------ 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/labyrinthe/6-jumeaux/test/cam_bille-test.py b/labyrinthe/6-jumeaux/test/cam_bille-test.py index 12e3644..93fca79 100644 --- a/labyrinthe/6-jumeaux/test/cam_bille-test.py +++ b/labyrinthe/6-jumeaux/test/cam_bille-test.py @@ -1,7 +1,7 @@ import os, time +import numpy as np import matplotlib.pyplot as plt - -import cv2 +import cv2 as cv ############################################################################### # cam_bille-test.py : @@ -24,29 +24,50 @@ import cv2 # Init de la caméra cam_id = 0 # 0 pour la 1ere camera, 1 pour la seconde ... -cam = cv2.VideoCapture(cam_id) # 0 pour la 1ere camera, 1 pour la +cam = cv.VideoCapture(cam_id) # 0 pour la 1ere camera, 1 pour la assert cam.isOpened(), "Erreur lors de l'ouverture de la camera !" # Création de la fenêtre d'affichage -cv2.namedWindow("Caméra") +# cv.namedWindow("Caméra") ############################################################################### # Affichage ############################################################################### -# Capture -key='' +# Capture vidéo +echap='' while cam.isOpened(): cam_actif, cam_img = cam.read() - cv2.imshow("Caméra", cam_img) - key = cv2.waitKey(1) # Saisie clavier avec un timeout de 1 ms - if key & 0xFF == ord('q') or key == 27 : + cam_gray = cv.cvtColor(cam_img, cv.COLOR_BGR2GRAY) + cam_gray = cv.medianBlur(cam_gray, 5) + # (thresh, cam_bw) = cv.threshold(gray, 127, 255, cv.THRESH_BINARY) + rows = cam_gray.shape[0] + cercles = cv.HoughCircles(cam_gray, cv.HOUGH_GRADIENT, 1.5, rows / 8, param1=100, param2=30, minRadius=2, maxRadius=10) + # cercles = cv.HoughCircles(cam_gray, cv.HOUGH_GRADIENT, 1, rows / 8, param1=100, param2=30, minRadius=5, maxRadius=10) + + # Dessin de la zone de détection + + # Détection de la bille + if cercles is not None: + cercles = np.uint16(np.around(cercles)) + for i in cercles[0, :]: + centre = (i[0], i[1]) + cv.circle(cam_img, centre, 1, (0, 100, 100), 3) # Point des centres + rayon = i[2] + print ("Rayon :", rayon, "- Centre :", centre) + cv.circle(cam_img, centre, rayon, (255, 0, 255), 3) # Contour des cercles + + cv.imshow("Detection de cercles", cam_img) # "Détection" -> bug ! + # cv.imwrite("camera.png", cam_img) # Enregister l'image + + # Sortir + echap = cv.waitKey(1) # Saisie clavier avec un timeout de 1 ms + if echap & 0xFF == ord('q') or key == 27 : break - # cv2.imwrite("camera.png", cam_img) ############################################################################### # Quitter ############################################################################### cam.release() -cv2.destroyAllWindows() +cv.destroyAllWindows()