opencv查找固定层级的轮廓
时间: 2023-10-17 09:19:25 浏览: 63
opencv寻找轮廓
3星 · 编辑精心推荐
可以使用cv2.findContours()函数来查找图像中的轮廓。该函数返回一个轮廓列表和层级信息。层级信息描述了每个轮廓的父子关系和同级关系。使用该信息可以筛选出固定层级的轮廓。
以下是一个示例代码,用于查找所有层级为2的轮廓:
```
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓和层级信息
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 筛选出层级为2的轮廓
for i in range(len(contours)):
if hierarchy[0][i][3] == 2:
cv2.drawContours(img, contours, i, (0, 0, 255), 2)
# 显示结果
cv2.imshow('Contours', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在该代码中,cv2.findContours()函数的第二个参数为cv2.RETR_TREE,表示查找所有轮廓并构建整个轮廓树。cv2.CHAIN_APPROX_SIMPLE参数表示只保留轮廓的端点,以减少内存消耗。筛选出层级为2的轮廓的条件为hierarchy[0][i][3] == 2,其中hierarchy是层级信息列表,[0][i][3]表示第i个轮廓的父轮廓索引,如果为2,则表示该轮廓是第二层级的。最后使用cv2.drawContours()函数将符合条件的轮廓绘制到图像上。
阅读全文