4

我正在为我最后一年的项目做虹膜识别。现在,我能够通过使用霍夫圆变换来检测虹膜,但它不适用于检测瞳孔,尽管我将网络摄像头修改为 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);

在此处输入图像描述

4

1 回答 1

1

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

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

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

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

不能完全隔离左虹膜

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

于 2012-12-12T08:02:14.570 回答