gpt4 book ai didi

python-2.7 - 使用网络摄像头、OpenCV 和 Python 跟踪眼瞳位置

转载 作者:太空宇宙 更新时间:2023-11-03 20:43:36 24 4
gpt4 key购买 nike

我正在尝试构建一个我可以通过基本的眼球运动来控制的机器人。我将网络摄像头对准我的脸,根据我瞳孔的位置,机器人会以特定方式移动。如果瞳孔位于眼睛的上、下、左眼角、右眼角,机器人将分别向前、向后、向左、向右移动。

我最初的计划是使用 eye haar cascade 来找到我的左眼。然后我会在眼睛区域使用 houghcircle 来找到瞳孔的中心。我会通过计算从 houghcircle 中心到一般眼睛区域边界的距离来确定瞳孔在眼睛中的位置。

因此,对于我的代码的第一部分,我希望能够跟踪眼瞳的中心,如本视频中所示。 https://youtu.be/aGmGyFLQAFM?t=38

但是当我运行我的代码时,它无法始终如一地找到瞳孔的中心。 houghcircle 经常画在错误的区域。我怎样才能使我的程序始终找到瞳孔的中心,即使在眼睛移动时也是如此?

我是否可以/更好/更容易地告诉我的程序开始时瞳孔在哪里?我看过其他一些眼动追踪方法,但我无法形成通用算法。如果有人可以帮助形成一个,那将不胜感激! https://arxiv.org/ftp/arxiv/papers/1202/1202.6517.pdf

import numpy as np
import cv2

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_righteye_2splits.xml')

#number signifies camera
cap = cv2.VideoCapture(0)

while 1:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#faces = face_cascade.detectMultiScale(gray, 1.3, 5)
eyes = eye_cascade.detectMultiScale(gray)
for (ex,ey,ew,eh) in eyes:
cv2.rectangle(img,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
roi_gray2 = gray[ey:ey+eh, ex:ex+ew]
roi_color2 = img[ey:ey+eh, ex:ex+ew]
circles = cv2.HoughCircles(roi_gray2,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0)
try:
for i in circles[0,:]:
# draw the outer circle
cv2.circle(roi_color2,(i[0],i[1]),i[2],(255,255,255),2)
print("drawing circle")
# draw the center of the circle
cv2.circle(roi_color2,(i[0],i[1]),2,(255,255,255),3)
except Exception as e:
print e
cv2.imshow('img',img)
k = cv2.waitKey(30) & 0xff
if k == 27:
break

cap.release()
cv2.destroyAllWindows()

最佳答案

我可以从我之前所做的一些工作中看到两种选择:

  1. 使用以瞳孔中心为中心、眼球宽度为宽度的训练图像训练 Haar 检测器来检测眼球。我发现这比使用 Hough 圆或仅使用 OpenCV 的原始眼检测器(您的代码中使用的那个)更好。

  2. 使用 Dlib 的人脸界标点来估计眼睛区域。然后使用由眼球的白色和黑暗区域引起的对比度以及轮廓来估计瞳孔的中心。这产生了更好的结果。

关于python-2.7 - 使用网络摄像头、OpenCV 和 Python 跟踪眼瞳位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45789549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com