霍夫变换的圆检测代码 ,C++实现
时间: 2023-09-26 13:11:20 浏览: 19
圆检测 用霍夫变换算法实现
5星 · 资源好评率100%
下面是 C 语言实现的霍夫变换的圆检测代码:
```
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char *argv[]) {
Mat src = imread("circles.jpg", IMREAD_GRAYSCALE);
if (src.empty()) {
cout << "Cannot load the image" << endl;
return -1;
}
Mat blurred;
GaussianBlur(src, blurred, Size(5, 5), 0);
vector<Vec3f> circles;
HoughCircles(blurred, circles, HOUGH_GRADIENT, 1,
blurred.rows / 16,
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(src, center, radius, Scalar(0, 0, 255), 2);
}
imshow("Circles", src);
waitKey(0);
return 0;
}
```
该代码使用了 OpenCV 库,需要在编译前先安装 OpenCV。代码加载了一张名为“circles.jpg”的灰度图像,对其进行高斯模糊,然后使用 HoughCircles 函数检测图像中的圆,并在检测到的圆上绘制圆弧。最后,代码使用 imshow 函数显示最终图像。
阅读全文