图像分割的mask有空洞怎么修补

分享一个对实例分割mask修补的方法,希望对大家有所帮助。

1. 这是我准备分割的图片

2 分割结果

可以看到衣服部分有一些没分割出来,二值化图片能清晰看到衣服部分有些黑色未分出的地方。

3 补全mask区域

复制代码
import cv2
import numpy as np

def fill_mask_hole(img):
    # 将输入图片二值化
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    _, mask= cv2.threshold(img, 250, 255, cv2.THRESH_BINARY)
    # 二值化图片黑白反转
    mask = 255-mask

    # 因为最下面有一块黑色区域,没完全被包围。将最下面一行像素改成白色,保住黑色区域
    mask[-1,:] = 255

    # 寻找有多少孔洞
    contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    
    # 孔洞个数
    len_contour = len(contours)
    contour_list = []
    # 逐个补孔
    for i in range(len_contour):
        drawing = np.zeros_like(mask, np.uint8)  # create a black image
        
        # 根据孔洞范围判断需不需要补
        area = cv2.contourArea(contours[i])
        if area>1000: # 有大孔洞增加这个阈值
            continue
        
        img_contour = cv2.drawContours(drawing, contours, i, (255, 255, 255), -1)
        contour_list.append(img_contour)
    out = sum(contour_list)
    
    # 对应上面mask[-1,:] = 255,将改的白边改回来
    out[-1,:] = out[-2,:]
    return out


img1 = cv2.imread('test.jpg')
mask = fill_mask_hole(img1)
cv2.imwrite('mask1.jpg',mask)

4 结果图mask1.jpg

ok,补好啦

相关推荐
Omics Pro1 分钟前
预测性虚拟细胞中显式机理算子
大数据·数据库·人工智能·python·算法·机器学习·自然语言处理
haliu2 分钟前
【FHE 同态加密】我们如何实现同态加密推理(十六):未完成清单与已知边界(同态加密推理的精度、性能与安全)
人工智能·嵌入式·c·fhe·推理引擎·c11·边缘推理·同态加密推理
2601_965969064 分钟前
教师选择AI认证,应该重点看哪些考核内容?
人工智能·数据挖掘
墨心@10 分钟前
【无标题】
人工智能·大语言模型·agent·智能体·harness
康实训15 分钟前
2026营养实训室建设标准与实施方案
人工智能·实训室·实训室建设
渡我白衣16 分钟前
深入理解 Transformer:Decoder与Masked_Attention
linux·服务器·网络·c++·人工智能·深度学习·transformer
奕鼎竜瑆8 小时前
Solid 前端响应式开发从零到精通
前端·人工智能
YOLO数据集集合9 小时前
无人机桥梁损伤目标检测数据集 | 桥梁损伤 无人机巡检 结构健康监测 多类别检测9135期
人工智能·目标检测·无人机
动恰客流统计9 小时前
景区客流统计怎么做?兼顾管控与运营的实施方案解析
大数据·前端·人工智能
weixin_443883019 小时前
合规整改倒计时:高等级签名证书的应用场景
大数据·人工智能·法大大·法大大电子签·电子合同