C# 虹膜检测不起作用

C# 虹膜检测不起作用,c#,image-processing,emgucv,hough-transform,iris-recognition,C#,Image Processing,Emgucv,Hough Transform,Iris Recognition,我是图像处理的新手,我正在尝试为我的学者实现一个虹膜检测应用程序 在应用程序中,我成功地从输入流中检测到右眼。 之后,我必须执行虹膜检测操作,因此我遵循以下链接 当输入图像时,应用程序返回大约17个圆圈,但当我将网络摄像头作为输入时,它返回0。(我不知道原因)。 我希望能够完美准确地检测虹膜。请帮我解决这个问题 1.我应该如何准确检测虹膜?(代码示例将非常有用) 2.为什么应用程序不是任何圆形的网络摄像机输入流 提前谢谢 这是我用来检测右眼图片中圆圈的代码 double cannyThresh

我是图像处理的新手,我正在尝试为我的学者实现一个虹膜检测应用程序

在应用程序中,我成功地从输入流中检测到右眼。 之后,我必须执行虹膜检测操作,因此我遵循以下链接

当输入图像时,应用程序返回大约17个圆圈,但当我将网络摄像头作为输入时,它返回0。(我不知道原因)。 我希望能够完美准确地检测虹膜。请帮我解决这个问题

1.我应该如何准确检测虹膜?(代码示例将非常有用)

2.为什么应用程序不是任何圆形的网络摄像机输入流

提前谢谢

这是我用来检测右眼图片中圆圈的代码

double cannyThreshold = 180.0;
            double circleAccumulatorThreshold = 20;
            int irisy = 0;

        //Taken from - http://www.emgu.com/forum/viewtopic.php?f=7&t=3356
        CircleF[] circles = grayframeright.HoughCircles(
            new Gray(cannyThreshold),
            new Gray(circleAccumulatorThreshold),
            2.0, //Resolution of the accumulator used to detect centers of the circles
            20.0, //min distance
            5, //min radius
            0 //max radius
            )[0]; //Get the circles from the first channel


        MessageBox.Show(circles.Length + " circle length");

        CircleF Iris = new CircleF();

        foreach (CircleF circle in circles)
        {
                ImageFrame.Draw(circle, new Bgr(Color.Red), 2);
                grayframeright.ROI = new Rectangle();
                grayframeright.ROI = Rectangle.Empty;

                grayframeright.ROI = new Rectangle(10, 30, grayframeright.Width - 10, 55);
                Iris = circle;


         }

首先,为什么你的
0//max radius
5、//min radius
还要小?如果您粗略估计了虹膜半径,请尝试调整这两个值,以确保仅检测到此范围内的圆


其次,调整
2.0的值,//用于检测圆心的累加器的分辨率
。基本上,这个阈值设置得越小,检测到的圆圈就越多。

你有没有像原文章作者建议的那样尝试过使用变量?没有,因为我没有得到代码的某些部分。。。