C# 虹膜检测不起作用
我是图像处理的新手,我正在尝试为我的学者实现一个虹膜检测应用程序 在应用程序中,我成功地从输入流中检测到右眼。 之后,我必须执行虹膜检测操作,因此我遵循以下链接 当输入图像时,应用程序返回大约17个圆圈,但当我将网络摄像头作为输入时,它返回0。(我不知道原因)。 我希望能够完美准确地检测虹膜。请帮我解决这个问题 1.我应该如何准确检测虹膜?(代码示例将非常有用) 2.为什么应用程序不是任何圆形的网络摄像机输入流 提前谢谢 这是我用来检测右眼图片中圆圈的代码C# 虹膜检测不起作用,c#,image-processing,emgucv,hough-transform,iris-recognition,C#,Image Processing,Emgucv,Hough Transform,Iris Recognition,我是图像处理的新手,我正在尝试为我的学者实现一个虹膜检测应用程序 在应用程序中,我成功地从输入流中检测到右眼。 之后,我必须执行虹膜检测操作,因此我遵循以下链接 当输入图像时,应用程序返回大约17个圆圈,但当我将网络摄像头作为输入时,它返回0。(我不知道原因)。 我希望能够完美准确地检测虹膜。请帮我解决这个问题 1.我应该如何准确检测虹膜?(代码示例将非常有用) 2.为什么应用程序不是任何圆形的网络摄像机输入流 提前谢谢 这是我用来检测右眼图片中圆圈的代码 double cannyThresh
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的值,//用于检测圆心的累加器的分辨率
。基本上,这个阈值设置得越小,检测到的圆圈就越多。你有没有像原文章作者建议的那样尝试过使用变量?没有,因为我没有得到代码的某些部分。。。