我发现用于学生检测的Github代码Pupil Detection with Python and OpenCV解释了如何检测眼瞳,但仅解释了一只眼睛。我想检测两只眼睛。请给我一些想法,我如何从密码中识别出两只眼睛的瞳孔。

谢谢

最佳答案

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

所有这些行:“如果len(contours)> = 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语句替换它们)

关于python-2.7 - 如何使用Python和OpenCV检测两只眼睛的瞳孔,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41468303/

10-09 18:55