c++opencv找到轮廓后拟合圆
时间: 2023-08-01 11:12:56 浏览: 98
在C++ OpenCV中,可以使用`findContours`函数找到轮廓,然后使用`fitEllipse`或`minEnclosingCircle`函数拟合圆形。
以下是一个简单的示例代码,它假设您已经有一个二进制图像`src`,其中包含要查找轮廓的对象:
```c++
// 寻找轮廓
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
findContours(src, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 对每个轮廓拟合圆形
for (int i = 0; i < contours.size(); i++) {
// 使用椭圆拟合
RotatedRect ellipse = fitEllipse(contours[i]);
// 使用最小外接圆拟合
Point2f center;
float radius;
minEnclosingCircle(contours[i], center, radius);
// 在图像上绘制结果
ellipse(src, ellipse, Scalar(255, 0, 0), 2);
circle(src, center, (int)radius, Scalar(0, 0, 255), 2);
}
```
这将对每个找到的轮廓进行拟合,并在图像上绘制拟合的圆形。请注意,`fitEllipse`函数将返回一个`RotatedRect`对象,该对象描述拟合的椭圆形,而`minEnclosingCircle`函数将返回圆形的中心和半径。
阅读全文