contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
时间: 2024-07-02 18:00:37 浏览: 238
python+opencv实现移动侦测(帧差法)
`cv2.findContours()` 是OpenCV库中用于查找图像轮廓的方法,这对于形状检测和分析非常有用。参数说明如下:
- `mask`: 二进制图像,通常用于标记需要寻找轮廓的部分。
- `cv2.RETR_TREE`: 表示返回轮廓树结构,即每个轮廓都是由它的子轮廓组成的树状结构。
- `cv2.CHAIN_APPROX_SIMPLE`: 表示轮廓逼近方式,只保留顶点和垂直线段,简化轮廓表示。
以下是使用这些参数的一个简单示例:
```python
import cv2
# 假设你已经有了一个名为 'mask' 的二进制图像
contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# contours 是一个二维列表,其中每个元素代表一个轮廓,每个轮廓是一个numpy数组,包含轮廓的顶点坐标。
# hierarchy 是一个三维列表,它描述了轮廓之间的关系。每一行包含四个值:[nextContour, previousContour, firstChild, parentContour]。
# 你可以遍历contours来查看和操作每个轮廓,例如计算面积、形状分析等。
for contour in contours:
area = cv2.contourArea(contour)
print(f"Contour area: {area}")
# hierarchy 可以用来追踪轮廓之间的层次关系,如父子关系。
for idx, (_, _, _, parent_idx) in enumerate(hierarchy):
if parent_idx != -1:
print(f"Contour {idx} is a child of contour {parent_idx}")
```
阅读全文