图像分割的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,补好啦

相关推荐
君名余曰正则几秒前
机器学习04——决策树(信息增益、信息增益率、ID3、C4.5、CART、剪枝、连续值缺失值处理)
人工智能·决策树·机器学习
中电金信几秒前
中电金信:AI重构测试体系·智能化时代的软件工程新范式
人工智能·重构·软件工程
多恩Stone6 分钟前
【3DV 进阶-2】Hunyuan3D2.1 训练代码详细理解下-数据读取流程
人工智能·python·算法·3d·aigc
lypzcgf12 分钟前
Coze源码分析-资源库-删除插件-后端源码-错误处理与总结
人工智能·后端·go·coze·coze源码分析·ai应用平台·agent平台
AIGC小火龙果18 分钟前
OpenAI的开源王牌:gpt-oss上手指南与深度解析
人工智能·经验分享·gpt·搜索引擎·aigc·ai编程
CVer儿20 分钟前
【天文】星光超分辨图像增强
计算机视觉
新智元21 分钟前
狂登热搜,iPhone 17「挤爆牙膏」!5999 起价,AirPods 变身同声传译
人工智能·openai
SHUIPING_YANG30 分钟前
如何让dify分类器更加精准的分类?
人工智能·分类·数据挖掘
星期天要睡觉34 分钟前
计算机视觉(opencv)——基于模板匹配的身份证号识别系统
人工智能·opencv·计算机视觉
东方佑39 分钟前
打破常规:“无注意力”神经网络为何依然有效?
人工智能·深度学习·神经网络