You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenCV填充轮廓保留内部孔洞及层级填充问题求助

OpenCV轮廓填充问题:保留孔洞及层级填充需求

我编写了Python代码,目标是填充图像外层轮廓但保留内部孔洞,实际却得到了整个区域被完全填充的结果。尝试通过轮廓层级参数调整实现需求,但始终无法达到预期效果。

尝试的代码

import numpy as np
import cv2

# 加载PNG图像
img = cv2.imread('slice.png')

# 转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 阈值处理生成二值图像
ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY)

# 查找轮廓及层级
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# 创建与原图尺寸一致的空白图像
filled_img = np.zeros(img.shape[:2], dtype=np.uint8)

# 遍历轮廓及层级
for i, contour in enumerate(contours):
    # 判断轮廓是否无父级
    if hierarchy[0][i][3] == -1:
        # 填充无父级的轮廓
        cv2.drawContours(filled_img, [contour], -1, 255, cv2.FILLED)

# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Filled Regions', filled_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

我尝试修改判断条件hierarchy[0][i][3] == -1中的值(改为0、1等),但结果要么仅填充了小型孔洞,要么依然是整个大轮廓被完全填充,都不符合预期。

更新需求

除了保留孔洞的填充效果外,还希望实现低层级轮廓内部的填充,即内层轮廓对应的区域也被填充为白色。


内容的提问来源于stack exchange,提问作者Vanhanen_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 14:22:25