只用来记录学习笔记
代码:
Mat msrc;
medianBlur(src, msrc, 3); //中值滤波
cvtColor(msrc, msrc, CV_BGR2GRAY); //转成灰度图像
vector<Vec3f> pcircles;
HoughCircles(msrc, pcircles, CV_HOUGH_GRADIENT, 1, 10, 100, 30, 5, 50);
// msrc:输入图像 ,必须是8位的单通道灰度图像
// pcircles:输出结果,发现的圆信息
// CV_HOUGH_GRADIENT:方法 - HOUGH_GRADIENT
// 1 :dp = 1; 2就是原图一半
// 10 :最短距离-可以分辨是两个圆的,否则认为是同心圆- src_gray.rows/8
// 100:canny edge detection low threshold
// 30 :中心点累加器阈值 – 候选圆心
// 5 :最小半径
// 50 :最大半径
src.copyTo(dst);
for (size_t i = 0; i < pcircles.size(); i++) {
Vec3f cc = pcircles[i];
circle(dst, Point(cc[0], cc[1]), cc[2], Scalar(255, 0, 255), 2, LINE_AA);
circle(dst, Point(cc[0], cc[1]), 2, Scalar(98, 23, 255), 2, LINE_AA);
}
imshow("HoughCircles", dst);
效果图: