opencv中的瞳孔检测

时间:2012-12-11 17:33:23

标签: opencv iris-recognition

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

enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

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

无论如何,当我在计算机上运行此代码时,结果是:

Doesn't exactly isolate the left iris

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