Vision robotique
Présentation du projet
- Le projet de vision robotique utilise la librairie open cv en python pour détecter des cibles dans une image.
- Au cégep nous utilisons des verres rouges sur fond gris (table tournante) comme cible.
- Comme les verres ont tous la même couleur, il est simple de les identifier dans l'image en utilisant la fonction de détection de couleur de open cv.
- Pour réaliser ce projet, nous avons besoin d'un ordinateur en linux avec webcam intégrée.
- Ce projet a été développé par Raphaël Bouchard en 2025. le code d'exemple a été écrit par celui-ci au cégep de Sorel Tracy.
Programmation Python
1. ouvrir le bloc note
2. Enregistrer le projet et le nommer avec un nom terminant en .py
- Le fichier sera donc enregistré en document contenant du code python
3. Copier le code d'exemple et le coller dans le bloc-notes
import numpy as np
import cv2
import time
camera = cv2.VideoCapture(0) # 0 = cam ordi / 2 = cam usb
while (1):
ret, image = camera.read()
image_hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
#rouge_min = np.array([110, 180, 140], np.uint8) # en HSV
#rouge_max = np.array([190, 255, 255], np.uint8)
rose_min = np.array([160, 80, 60], np.uint8) # en HSV
rose_max = np.array([179, 255, 255], np.uint8)
orange_min = np.array([0,80, 60], np.uint8) # en HSV
orange_max = np.array([15, 255, 255], np.uint8)
masque_orange = cv2.inRange(image_hsv, orange_min, orange_max)
masque_rose = cv2.inRange(image_hsv, rose_min, rose_max)
masque_rouge = masque_rose | masque_orange
kernal = np.ones((5, 5), "uint8")
masque_rouge = cv2.dilate(masque_rouge, kernal)
masque_et_image = cv2.bitwise_and(image, image, mask = masque_rouge)
contour, hierarchy = cv2.findContours(masque_rouge, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # cv2.RETR_EXTERNAL ou cv2.RETR_TREE
num_cible = 1
for pic, contour in enumerate (contour):
aire = cv2.contourArea(contour)
if (aire > 5000):
x, y, l, h = cv2.boundingRect(contour)
x_image = x
y_image = y
milieu =(x_image + (l // 2)), (y_image + (h //2 ))
verre = cv2.circle(image, (milieu), (l // 2), (0, 255, 0), 5)
cv2.circle(image, (milieu) , 5, (255, 0, 0), -1) #point au milieu des rond
num_cible_str = str(num_cible)
cv2.putText(image, (num_cible_str), (x_image, y_image),cv2.FONT_HERSHEY_SIMPLEX, 2.5,(255, 0, 0),6)
num_cible = (num_cible + 1)
cv2.imshow("camera", image)
if cv2.waitKey(10) & 0xFF == ord('q'):
camera.release()
cv2.destroyAllWindows()
break
Lancer le programme
- 1. S'assurer d'avoir enregistré les modifications en faisant
ctrl + S
- 3. entrer la commande suivante:
python3 exemple.py
- *Remplacer
exemple
par le nom du fichier bloc-notes choisis a l'étape 2 de la section programmation python.
- *Remplacer
- 4. Pour arrêter le programme et fermer l'image, appuyez sur la touche
Q
de votre clavier.- Si cela ne fonctionne pas, vous pouvez forcer le programme à s'arrêter en faisans
ctrl + C
dans le terminal.
- Si cela ne fonctionne pas, vous pouvez forcer le programme à s'arrêter en faisans