如何使用Python和OpenCV检测双眼Pupil

时间:2017-01-04 16:07:01

标签: python-2.7 opencv computer-vision eye-detection

我找到了用于瞳孔检测的Github代码Pupil Detection with Python and OpenCV,它解释了如何检测眼睛瞳孔,但只解释了一只眼睛。我想检测两只眼睛。请告诉我如何从代码中检测双眼瞳孔。

由于

1 个答案:

答案 0 :(得分:1)

简单地查看该代码,它看起来像是找到了双眼但却只给了你一个。只需根据需要修改代码即可提取两个找到的blob而不仅仅是一个。第55-72行是将你的候选人池从一些blob(可能的学生)修剪到1的地方。

所有这些行:“如果len(轮廓)> = n”基本上是说,如果你还有一个以上的blob,请尝试切出一个。问题是,你想要两个最大的blob,而不是那个。因此,您需要重写这些检查语句,以便消除除了两个最大的blob之外的所有blob,然后在每个质心上绘制圆圈。据我所知,没有别的东西需要修改。

这里有一些可能有用的示例代码(未经测试)。 我不知道python语法,只修改了链接文件中的一些东西

while len(contours) > 2:
    #find smallest  blob and delete it
    minArea = 1000000  #this should be the dimensions of your image to be safe
    MAindex = 0         #to get the unwanted frame 
    currentIndex = 0 
    for cnt in contours:
        area = cv2.contourArea(cnt)
        if area < minArea:
            minArea = area
            MAindex = currentIndex
        currentIndex = currentIndex + 1

    del contours[MAindex]       #remove the picture frame contour
    del distanceX[MAindex]

这会让你看到你的两个眼睛斑点,然后你仍然需要为每个斑点中心添加一个圆形图。 (你需要删除所有“if len ...”语句,并用while语句替换它们)