contours, _ = cv2.findContours(img_binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE),添加代码显示轮廓
时间: 2024-11-09 09:26:11 浏览: 20
`cv2.findContours()` 是 OpenCV 中用于查找图像中的轮廓(contours)的函数。在这个例子中:
- `img_binary` 是二值化的图像,即黑白分明的图像,用于提取边缘或物体的轮廓。
- `cv2.RETR_EXTERNAL` 表示只返回外部轮廓,即最外层的轮廓,不包括内部的小轮廓。
- `cv2.CHAIN_APPROX_SIMPLE` 表示使用简单的链编码压缩轮廓,这意味着连续的顶点会被合并为单个点,减少了存储空间。
当你运行这段代码后,`contours` 就是一个包含所有外部轮廓的列表,每个轮廓都是一个由 `(x, y)` 坐标对组成的二维数组。
为了显示这些轮廓,你可以使用 OpenCV 的 `cv2.drawContours()` 函数。这里是一个完整的示例代码片段:
```python
import cv2
import numpy as np
# 假设 img_binary 是已经处理过的二值图像
_, contours, hierarchy = cv2.findContours(img_binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 创建一个空白图像来绘制轮廓
image_with_contours = img_binary.copy()
# 使用白色填充轮廓
cv2.drawContours(image_with_contours, contours, -1, (255, 255, 0), 2) # 第三个参数是轮廓索引(-1表示所有的轮廓)
# 显示原始二值图像和轮廓图
cv2.imshow("Original Image", img_binary)
cv2.imshow("Image with Contours", image_with_contours)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码首先复制了 `img_binary` 以便不会修改原图像,然后用白色绘制出所有的轮廓。`cv2.waitKey(0)` 用来暂停窗口直到用户按下任意键,`cv2.destroyAllWindows()` 则关闭所有打开的窗口。
如果你有具体的 `img_binary` 图像,记得替换到上述代码中,然后运行即可看到结果。
阅读全文