opencv c++如何识别圆
时间: 2023-08-10 09:08:12 浏览: 47
要在OpenCV C++中识别圆,可以使用Hough变换算法。以下是一个简单的代码示例:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat src, src_gray;
src = imread("circle.jpg", IMREAD_COLOR);
// 转换为灰度图
cvtColor(src, src_gray, COLOR_BGR2GRAY);
// 高斯滤波去噪声
GaussianBlur(src_gray, src_gray, Size(9, 9), 2, 2);
vector<Vec3f> circles;
// 霍夫变换检测圆
HoughCircles(src_gray, circles, HOUGH_GRADIENT, 1, src_gray.rows/8, 200, 100, 0, 0);
// 绘制圆
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), 3, LINE_AA);
}
imshow("circle detection", src);
waitKey(0);
return 0;
}
```
在这个示例中,我们首先将图像转换为灰度图并进行高斯滤波去噪声。接下来,我们使用`HoughCircles`函数检测圆,并将检测到的圆绘制在原始图像上。最后,我们显示结果图像并等待按键。
阅读全文