【问题标题】:Pupil detection in opencvopencv中的瞳孔检测
【发布时间】:2012-12-11 17:33:23
【问题描述】:

我正在为我最后一年的项目做虹膜识别。现在,我能够通过使用霍夫圆变换来检测虹膜,但它不适用于检测瞳孔,尽管我将网络摄像头修改为 IR 网络摄像头。尝试使用 HSV 颜色检测虹膜中的黑色,但仍然无法正常工作,那么我应该参考哪些算法?

IplImage *capturedImg = cvLoadImage("template.jpg",1);
  IplImage* imgHSV = cvCreateImage(cvGetSize(capturedImg), 8, 3);
cvCvtColor(capturedImg, imgHSV, CV_BGR2HSV);

  IplImage* imgThreshed = cvCreateImage(cvGetSize(capturedImg), 8, 1);
       cvInRangeS(imgHSV, cvScalar(0, 0,0, 0), cvScalar(179, 200, 50,77), imgThreshed);
       cvShowImage("HSV",imgThreshed);

【问题讨论】:

  • 这完全取决于您的输入帧的外观。你能发布一个你使用但不起作用的代码示例吗?
  • 我使用的网络摄像头是罗技 c920,我把它变成了红外网络摄像头,然后代码是我项目中用于检测瞳孔的部分,但是,这是 cvScalar 的问题吗?非常感谢......

标签: opencv iris-recognition


【解决方案1】:

如果您想找到黑色,它将出现在值接近零的位置。您可以将 cvInRangeS 命令更改为以下内容:

cvInRangeS(imgHSV, cvScalar(0,0,0) , cvScalar(255, 255,27), imgThreshed);

这样,如果像素的值大于 27,您就可以排除它们。您可能需要尝试使用色调和饱和度值,看看哪个效果最好。另外,因为图像中的每个像素都有三个通道,所以我认为在使用 cvInRangeS 时使用 4 通道标量是没有意义的。

无论如何,当我在我的计算机上运行这段代码时,结果如下:

您可以使用斑点检测来隔离此图像中的左侧虹膜。你可能想看看这个库:http://code.google.com/p/cvblob/

【讨论】:

  • 如果我在 HSV 图像中检测到圆圈,那么我如何检测到圆圈(瞳孔)?因为我使用 cvCanny 但它不起作用...
  • Canny 边缘检测应该在灰度图像上运行。在价值渠道上运行它是有意义的。使用精明边缘检测后,您可能希望对结果使用斑点检测来隔离圆。要隔离圆形,this 可能会对您有所帮助。
  • 如何在HSV图像中进行canny edge?还是我需要将其转换回 BGR?我完全不知道...
  • 只能对灰度图像进行canny边缘检测。我建议您从图像中提取价值通道,并将其用作执行边缘检测的通道。有关拆分语法,请参阅this。如果你想要一个关于边缘检测的教程,有一个here
猜你喜欢
  • 2018-11-19
  • 2018-10-04
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 2012-09-01
  • 2015-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多