J'ai un projet de fauteuil roulant contrôlé par les yeux où j'ai besoin de détecter la pupille de l'œil et, selon son mouvement, la chaise roulante bouge. Comme un test pour le code que j'écris j'ai effectué le script sur une image statique. L'image est exactement là où la caméra sera mise. L'appareil photo sera un IR.Suivi des pupilles oculaires à l'aide de Hough Circle Transform
Note: J'utilise compilé OpenCV 3.1.0-dev et python2.7 sous Windows platfrom
Le cercle détecté à l'aide que je voulais Houghcircle transformer:
Après que je travaille sur un code pour détecter la même chose seulement en utilisant une caméra IR.
Les résultats du code d'image statique sont très fiables pour moi, mais le problème est le code avec la caméra IR.
Le code que je l'ai écrit à ce jour est:
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
while True:
## Read Image
ret, image = cap.read()
## Convert to 1 channel only grayscale image
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
## CLAHE Equalization
cl1 = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
clahe = cl1.apply(gray)
## medianBlur the image to remove noise
blur = cv2.medianBlur(clahe, 7)
## Detect Circles
circles = cv2.HoughCircles(blur ,cv2.HOUGH_GRADIENT,1,20,
param1=50,param2=30,minRadius=7,maxRadius=21)
if circles != None:
circles = np.round(circles[0,:]).astype("int")
for circle in circles[0,:]:
# draw the outer circle
cv2.circle(image,(circle[0],circle[1]),circle[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(image,(circle[0],circle[1]),2,(0,0,255),3)
if cv2.waitKey(1) in [27, ord('q'), 32]:
break
cap.release()
cv2.destroyAllWindows()
I always get this error:
**if circles != None:
FutureWarning: comparison to `None` will result in an elementwise object comparison in the future.
Traceback (most recent call last):
cv2.circle(image,(circle[0],circle[1]),circle[2],(0,255,0),2)
IndexError: invalid index to scalar variable.**
Pour toute question concernant le code de l'image statique, le code est:
import cv2
import numpy as np
## Read Image
image = cv2.imread('eye.tif')
imageBackup = image.copy()
## Convert to 1 channel only grayscale image
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
## CLAHE Equalization
cl1 = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
clahe = cl1.apply(gray)
## medianBlur the image to remove noise
blur = cv2.medianBlur(clahe, 7)
## Detect Circles
circles = cv2.HoughCircles(blur ,cv2.HOUGH_GRADIENT,1,20,
param1=50,param2=30,minRadius=7,maxRadius=21)
for circle in circles[0,:]:
# draw the outer circle
cv2.circle(image,(circle[0],circle[1]),circle[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(image,(circle[0],circle[1]),2,(0,0,255),3)
cv2.imshow('Final', image)
cv2.imshow('imageBackup', imageBackup)
cv2.waitKey(0)
cv2.destroyAllWindows()
Quel est le problème avec la caméra IR? Est-ce qu'il trouve un cercle ou simplement rien? Pouvez-vous fournir un exemple d'image? – PSchn
@PSchn Il n'y a pas de problème avec la caméra, le problème est que si aucun cercle n'est détecté, j'obtiens une erreur NoneType dans le script Python. Je devrais mettre cela aussi dans la question. – Tes3awy
Veuillez également ajouter le message d'erreur. – PSchn