1. 检测边缘,发现可能的圆心
2. 基于第一步的基础上从候选圆心开始计算最佳半径大小
1cv::HoughCircles( 2 InputArray image,// 输入图像 ,必须是8位的单通道灰度图像 3 OutputArray circles,// 输出结果,发现的圆信息 4 Int method,// 方法 - HOUGH_GRADIENT 5 Double dp,// dp = 1; 6 Double mindist,// 10 最短距离-可以分辨是两个圆的,否则认为是同心圆- src_gray.rows/8 7 Double param1,// canny edge detection low threshold 8 Double param2,// 中心点累加器阈值 – 候选圆心 9 Int minradius,// 最小半径10 Int maxradius//最大半径 )
示例程序:
一、直线检测
1//霍夫变换-直线检测 2 #include"stdafx.h" 3 #include4 #include5 #include6 7usingnamespace cv; 8usingnamespace std; 910int main(int argc,char*argv) 11{ 12 Mat src; 13 src = imread("C:\\Users\\59235\\Desktop\\imag\\LineAndWord2.png"); 14if (!src.data) 15 { 16 printf("could not load image...\n"); 17return -1; 18 } 19 namedWindow("input", CV_WINDOW_AUTOSIZE); 20 imshow("input", src); 2122 Mat gray_src, dst; 23 cvtColor(dst, gray_src, CV_GRAY2BGR); 24//Canny边缘检测25 Canny(gray_src, dst,100,200,3); 26 imshow("1", gray_src); 27 imshow("2", dst); 2829 vectorplines;//定义一个存放直线信息的向