```
Mat image = imread("E:\\1306.jpg", IMREAD_GRAYSCALE); //加载灰度图
Mat edges;
Mat kernel_rect = getStructuringElement(MORPH_RECT, Size(3, 5)); // 3*5的矩形
morphologyEx(image, image, MORPH_OPEN, kernel_rect, Point(-1, -1), 2); //开运算2次
threshold(image, image, 0, 255, THRESH_BINARY + THRESH_OTSU); //Otsu二值化
imshow("开", image); // 显示结果
Canny(image, edges, 50, 150, 3); // 使用 Canny 边缘检测
vector<Vec3f> circles;// 检测圆
HoughCircles(edges, circles, HOUGH_GRADIENT, 1, edges.rows / 8,100, 30, 1, 30);
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(image, center, radius, Scalar(255, 255, 255), 3);
circle(image, center, 3, Scalar(255, 255, 255), 3); // 圆心
}
imshow("圆检测", image);// 显示结果
imwrite("E:\\圆检测.jpg", image); // 保存结果```未定义的标识符HOUGH_GRADIENT,使用OpenCV2.13.6
最新发布