首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenCV:使用霍夫圆变换检测虹膜

OpenCV:使用霍夫圆变换检测虹膜
EN

Stack Overflow用户
提问于 2012-09-24 22:52:34
回答 1查看 11.6K关注 0票数 7

我是openCV的新手,但我想创建虹膜识别程序。虽然带有网络摄像头的系统可以检测到眼睛,但它不能检测圆形虹膜。我正在使用Hough Circle变换。但如果图像中的虹膜不够圆,系统就无法检测到它。有什么解决方案吗?

使用的算法是Hough Circle变换。

代码语言:javascript
复制
IplImage *capturedImg = cvLoadImage("circle.jpg",1);
IplImage *grayscaleImg = cvCreateImage(cvGetSize(capturedImg), 8, 1);

cvCvtColor(capturedImg, grayscaleImg, CV_BGR2GRAY);

// Gaussian filter for less noise
cvSmooth(grayscaleImg, grayscaleImg, CV_GAUSSIAN,9, 9 );

//Detect the circles in the image
CvSeq* circles = cvHoughCircles(grayscaleImg,
                         storage,
                         CV_HOUGH_GRADIENT,
                         2,
                         grayscaleImg->height/4,
                         200,
                     100 );

for (i = 0; i < circles->total; i++) 
{
     float* p = (float*)cvGetSeqElem( circles, i );
     cvCircle( capturedImg, cvPoint(cvRound(p[0]),cvRound(p[1])), 
        3, CV_RGB(0,255,0), -1, 8, 0 );
     cvCircle( capturedImg, cvPoint(cvRound(p[0]),cvRound(p[1])), 
         cvRound(p[2]), CV_RGB(0,0,255), 3, 8, 0 );
}
// cvCircle( img,cvPoint( r->x, r->y ),67, CV_RGB(255,0,0), 3, 8, 0 );      
cvNamedWindow( "circles", 1 );
cvShowImage( "circles", capturedImg );
EN

Stack Overflow用户

回答已采纳

发布于 2012-09-25 21:53:36

cvSmooth()cvHoughCircles()之间添加对cvCanny()的调用。这将执行边缘检测算法,该算法将为cvHoughCircles()提供更好的输入图像,并可能改善您的结果。

在Stackoverflow上有很多关于similar的问题,我建议你使用use the search box

票数 6
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12567520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档