小编use*_*541的帖子

使用网络摄像头,OpenCV和Python跟踪眼睛瞳孔位置

我正在尝试构建一个可以通过基本眼动来控制的机器人.我指着我的脸上有一个网络摄像头,根据我瞳孔的位置,机器人会以某种方式移动.如果瞳孔位于眼睛的顶部,底部,左角,右角,则机器人将分别向前,向后,向左,向右移动.

我最初的计划是使用眼球级联找到我的左眼.然后我会在眼睛区域使用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) …
Run Code Online (Sandbox Code Playgroud)

opencv eye-tracking python-2.7

8
推荐指数
1
解决办法
8888
查看次数

标签 统计

eye-tracking ×1

opencv ×1

python-2.7 ×1