(一)知识点【这一节更深层学习是对霍夫梯度的学习,霍夫原理的学习】
(二)API
①HoughCircles()
void HoughCircles( InputArray image, OutputArray circles,
int method, double dp, double minDist,
double param1 = 100, double param2 = 100,
int minRadius = 0, int maxRadius = 0 );
参数解释:(15条消息) 关于霍夫找圆算法cvHoughCircles的参数_zhazhiqiang2010的专栏-CSDN博客_cv.houghcircles
(15条消息) 霍夫检测圆:霍夫梯度法_cosmic_potato的博客-CSDN博客
image
输入 8-比特、单通道灰度图像.
circle_storage
检测到的圆存储仓. 可以是内存存储仓 (此种情况下,一个线段序列在存储仓中被创建,并且由函数返回)或者是包含圆参数的特殊类型的具有单行/单列的CV_32FC3型矩阵(CvMat*). 矩阵头为函数所修改,使得它的 cols/rows 将包含一组检测到的圆。如果 circle_storage 是矩阵,而实际圆的数目超过矩阵尺寸,那么最大可能数目的圆被返回
. 每个圆由三个浮点数表示:圆心坐标(x,y)和半径.
method:Hough 变换方式,目前只支持CV_HOUGH_GRADIENT(霍夫梯度法)
dp【目前这块不是很懂】
累加器图像的分辨率。这个参数允许创建一个比输入图像分辨率低的累加器。(这样做是因为有理由认为图像中存在的圆会自然降低到与图像宽高相同数量的范畴)。如果dp设置为1,则分辨率是相同的;如果设置为更大的值(比如2),累加器的分辨率受此影响会变小(此情况下为一半)。dp的值不能比1小。(越大越容易检测到圆)
min_dist:该参数是让算法能明显区分的两个不同圆之间的最小距离。(距离是基于圆心)
param1:用于Canny的边缘阀值上限,下限被置为上限的一半。(基于霍夫梯度)
param2:累加器的阀值。(相当于vote)
min_radius:最小圆半径。
max_radius:最大圆半径。
②round()【四舍五入函数】
(15条消息) round函数_脚踏实地,仰望星空-CSDN博客_round函数
(三)代码展示
①tips:在霍夫圆检测或者直线检测时,最好利用高斯降噪(霍夫中自带canny算法)
(四)运行效果