drawContours(result, contours, i, Scalar(0, 0, 255), 2, 8, hierarchy, 0);如何修改为绘制轮廓线而不是绘制整个形状
时间: 2023-10-04 12:10:51 浏览: 71
要绘制轮廓线而不是整个形状,可以将绘制轮廓的函数从`drawContours`改为`polylines`,并将轮廓线的点集作为参数传递。以下是修改后的代码:
```
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
findContours(image, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);
Mat result = Mat::zeros(image.size(), CV_8UC3);
for (int i = 0; i < contours.size(); i++) {
polylines(result, contours[i], true, Scalar(0, 0, 255), 2, 8, 0);
}
```
这里的`polylines`函数绘制的是轮廓线的多边形,所以需要将`closed`参数设置为`true`。如果要绘制非闭合的轮廓线,可以将`closed`参数设置为`false`。
相关问题
drawContours(result, contours, i, Scalar(0, 0, 255), 2, 8, hierarchy, 0);绘制外部轮廓线
这段代码是用于绘制图像中的外部轮廓线的,其中:
- `result`:表示要在哪个图像上绘制轮廓线。
- `contours`:表示检测到的轮廓线的列表,这个列表是通过 `findContours()` 函数得到的。
- `i`:表示要绘制的轮廓线在 `contours` 列表中的索引。
- `Scalar(0, 0, 255)`:表示绘制轮廓线的颜色,这里使用的是红色。
- `2`:表示绘制轮廓线的线宽。
- `8`:表示绘制轮廓线的类型,这里是使用 8 连通性。
- `hierarchy`:表示轮廓线的层级结构,可以通过 `findContours()` 函数的 `hierarchy` 参数得到。
- `0`:表示绘制轮廓线的起始点,这里是从轮廓线的起点开始绘制。
这段代码可以用于在图像上绘制检测到的物体的外部轮廓线。通过调整颜色、线宽等参数,可以得到不同样式的轮廓线。
drawContours(result, contours, i, Scalar(0, 0, 255), 2, 8, hierarchy, 0);
这段代码是 OpenCV 中用于绘制轮廓的函数 `drawContours` 的调用,它的参数解释如下:
- `result`:要在其上绘制轮廓的图像。
- `contours`:包含轮廓点的向量。
- `i`:要绘制的轮廓的索引。
- `Scalar(0, 0, 255)`:用于绘制轮廓的颜色,这里是红色。
- `2`:轮廓线的宽度。
- `8`:轮廓线的类型。
- `hierarchy`:可选参数,轮廓结构的可选输出矩阵。
- `0`:可选参数,绘制轮廓的最大层次。
阅读全文