这是我的代码:
import cv2
import cv2.cv as cv
img = cv2.imread('pupil_still_1.png',0)
ret, thresh = cv2.threshold(img, 50, 255, cv2.THRESH_BINARY)
edges = cv2.Canny(thresh, 100, 200)
cimg=cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(edges, cv.CV_HOUGH_GRADIENT, 1, 10000, param1 = 50, param2 = 30, minRadius = 0, maxRadius = 0)
for i in circles[0,:]:
cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
#Code to close Window
cv2.imshow('detected Edge',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
for i in range (1,5):
cv2.waitKey(1)
这不是一个非常复杂的代码,它运行得很好。
对不起我想张贴两张照片,但我没有足够的声誉。因此,我将尝试解释正在发生的事情。
正如您所看到的,我在尝试检测圆圈之前正在进行一些图像处理。我可以检测到一个cicle,它也是瞳孔,但不知何故它不合适。检测到的圆圈更加清晰。 似乎HoughCircles在瞳孔内检测到一个较小圆圈的一部分。
我不知道我能做什么。有什么建议可以尝试吗?
编辑: 图片到原始图片 https://oc.fk06.hm.edu/index.php/s/9Y6FExTQVFl04U4 (不是最好的质量,但这是挑战; o))
使用HougheCircle检测图片到转换后的图片 https://oc.fk06.hm.edu/index.php/s/tJk2WiSVPrMSLix