mirror of
https://forge.apps.education.fr/blender-edutech/blender-edutech-tutoriels.git
synced 2024-01-27 09:42:33 +01:00
Détection de la bille
This commit is contained in:
parent
247a44b5e2
commit
0dda143b9c
@ -1,7 +1,7 @@
|
|||||||
import os, time
|
import os, time
|
||||||
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
import cv2 as cv
|
||||||
import cv2
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# cam_bille-test.py :
|
# cam_bille-test.py :
|
||||||
@ -24,29 +24,50 @@ import cv2
|
|||||||
|
|
||||||
# Init de la caméra
|
# Init de la caméra
|
||||||
cam_id = 0 # 0 pour la 1ere camera, 1 pour la seconde ...
|
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 !"
|
assert cam.isOpened(), "Erreur lors de l'ouverture de la camera !"
|
||||||
|
|
||||||
# Création de la fenêtre d'affichage
|
# Création de la fenêtre d'affichage
|
||||||
cv2.namedWindow("Caméra")
|
# cv.namedWindow("Caméra")
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Affichage
|
# Affichage
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
# Capture
|
# Capture vidéo
|
||||||
key=''
|
echap=''
|
||||||
while cam.isOpened():
|
while cam.isOpened():
|
||||||
cam_actif, cam_img = cam.read()
|
cam_actif, cam_img = cam.read()
|
||||||
cv2.imshow("Caméra", cam_img)
|
cam_gray = cv.cvtColor(cam_img, cv.COLOR_BGR2GRAY)
|
||||||
key = cv2.waitKey(1) # Saisie clavier avec un timeout de 1 ms
|
cam_gray = cv.medianBlur(cam_gray, 5)
|
||||||
if key & 0xFF == ord('q') or key == 27 :
|
# (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
|
break
|
||||||
# cv2.imwrite("camera.png", cam_img)
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Quitter
|
# Quitter
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
cam.release()
|
cam.release()
|
||||||
cv2.destroyAllWindows()
|
cv.destroyAllWindows()
|
||||||
|
Loading…
Reference in New Issue
Block a user