用opencv函数HoughCircles为什么检测不到圆??
利用opencv 函数HoughCircles检测圆形竟然完全检测不到,什么问题啊,有没有大神遇到??
代码很简单,检测图像也简单:
const char *imgpath=".//testimg2.png";
Mat img=imread(imgpath);
Mat grayImage;
cvtColor(img,grayImage,CV_BGR2GRAY);//转化为灰度图
vector<Vec3f> circles;
HoughCircles(grayImage,circles,HOUGH_GRADIENT,1,10,200,100,0,0);
for (size_t i = 0; i < circles.size(); i++)
{
Point center(cvRound(circles[i][0]),cvRound(circles[i][1]));//圆心
int radius=cvRound(circles[i][2]);
//绘制圆心
circle(grayImage,center,3,Scalar(0,255,0),-1,8,0);
//绘制圆轮廓
circle(grayImage,center,radius,Scalar(155,50,255),3,8,0);
}
cout<<circles.size()<<endl;(输出0)
检测图片:

代码很简单,检测图像也简单:
const char *imgpath=".//testimg2.png";
Mat img=imread(imgpath);
Mat grayImage;
cvtColor(img,grayImage,CV_BGR2GRAY);//转化为灰度图
vector<Vec3f> circles;
HoughCircles(grayImage,circles,HOUGH_GRADIENT,1,10,200,100,0,0);
for (size_t i = 0; i < circles.size(); i++)
{
Point center(cvRound(circles[i][0]),cvRound(circles[i][1]));//圆心
int radius=cvRound(circles[i][2]);
//绘制圆心
circle(grayImage,center,3,Scalar(0,255,0),-1,8,0);
//绘制圆轮廓
circle(grayImage,center,radius,Scalar(155,50,255),3,8,0);
}
cout<<circles.size()<<endl;(输出0)
检测图片:

...全文
相关推荐
用OpenCV对图像中圆的检测以及拟合
用OpenCV对图像中圆的检测以及拟合,很有用噢
霍夫圆检测(HoughCircles)
霍夫圆检测 1、霍夫圆检测 从平面坐标到极坐标需要转换三个参数,C(x0,y0,r)C(x_0,y_0,r)C(x0,y0,r),其中(x0,y0)(x_0,y_0)(x0,y0)为圆心。 假设平面坐标中任意一个圆上的点,转换到极坐标中,C(x0,y0,r)C(x_0,y_0,r)C(x0,y0,r)处有最大值,霍夫变换基于此原理。 api: InputArray: 输入图像,数据类型一般用Mat型即可,需要是8位单通道灰度图像 OutputArray:存储检测到的圆的输出矢量 meth
13- OpenCV:霍夫检测:直线、圆检测
主要介绍霍夫检测,重点讲霍夫直线检测和圆的检测
Python用OPENCV进行圆检测的示例
Python用OPENCV进行圆检测的示例,包含完整代码和示例图像,OPENCV需要先安装好,不会的可以看我的文章
基于opencv3.0的同心圆检测
该工程通过改进opencv3.0自带函数HoughCircles()的使用,实现了同心圆的检测


图形处理/算法
