我发现用于学生检测的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/