C++opencv轮廓最小外接圆
时间: 2023-07-07 22:27:11 浏览: 55
在C++中,可以使用OpenCV库中的函数`minEnclosingCircle()`来找到轮廓的最小外接圆。具体的步骤如下:
1. 首先,使用`findContours()`函数来找到图像中的轮廓。这个函数会返回一个包含所有轮廓的向量。
2. 对于每个轮廓,使用`minEnclosingCircle()`函数来计算最小外接圆。这个函数需要传入一个包含轮廓所有点的向量。
3. 最后,可以使用OpenCV库中的`circle()`函数将最小外接圆画在原图像上。
下面是一个示例代码:
```c++
// 读入图像
Mat img = imread("example.jpg");
// 灰度化
Mat gray;
cvtColor(img, gray, COLOR_BGR2GRAY);
// 二值化
Mat binary;
threshold(gray, binary, 0, 255, THRESH_BINARY);
// 寻找轮廓
vector<vector<Point>> contours;
findContours(binary, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 画最小外接圆
for (int i = 0; i < contours.size(); i++) {
Point2f center;
float radius;
minEnclosingCircle(contours[i], center, radius);
circle(img, center, radius, Scalar(0, 0, 255), 2);
}
// 显示结果
imshow("result", img);
waitKey(0);
```
这段代码可以加载名为"example.jpg"的图像,找到其轮廓并画出最小外接圆。