Python 基于OpenCV阈值与houghttransform的实时虹膜检测

Python 基于OpenCV阈值与houghttransform的实时虹膜检测,python,opencv,eye-tracking,iris-recognition,Python,Opencv,Eye Tracking,Iris Recognition,我正在尝试创建一个能够在实时视频流中检测和跟踪眼睛虹膜的应用程序。为了做到这一点,我想使用Python和OpenCV。在互联网上对此进行研究时,我觉得有多种可能的方法可以做到这一点 第一种方式: 运行Canny过滤器获取边缘,然后使用houghcirle查找虹膜 第二种方式: 使用Otsus算法查找完美阈值,然后使用cv2.findContours()查找虹膜 由于我希望在树莓Pi(4B)上运行此功能,我的问题是这些方法中的哪一种更好,尤其是在可靠性和性能方面?我会选择第三种方法,从一种完善的面

我正在尝试创建一个能够在实时视频流中检测和跟踪眼睛虹膜的应用程序。为了做到这一点,我想使用
Python
OpenCV
。在互联网上对此进行研究时,我觉得有多种可能的方法可以做到这一点

第一种方式:

运行
Canny过滤器
获取边缘,然后使用
houghcirle
查找
虹膜

第二种方式:

使用
Otsus算法
查找完美阈值,然后使用
cv2.findContours()
查找
虹膜


由于我希望在树莓Pi(4B)上运行此功能,我的问题是这些方法中的哪一种更好,尤其是在可靠性和性能方面?

我会选择第三种方法,从一种完善的面部地标检测方法(例如dlib)开始。您可以使用预先训练的模型来获得眼睛位置的可靠估计

这是面部地标检测器的输出示例:

然后你继续从那里找到虹膜,或者使用边缘检测,Hough或者其他方法

也许你可以简单地使用一种启发式方法,因为你可以假设虹膜总是在每只眼睛周围关键点的质量中心


在类似的环境中(甚至对于Raspberry),例如PyImageSearch,也有一些很好的在线教程

边缘检测比阈值更可靠,原因是阈值随图像的光照强度(可能是皮肤等其他因素)而变化。因此,您必须选择正确的方法。。。。Sobel、Canny、Prewitt……等等,也选择righ方法进行圆检测。我一直在使用Haar Cascade来检测眼睛的位置,与Haar Cascade相比,使用landmark检测有什么优势吗?我想说landmark检测更稳健,但是如果Haar Cascade适合你,那就好了!