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

相关推荐
Leo.yuan3 小时前
AI辅助数据分析:如何让分析效率提升85%?
大数据·人工智能
太子釢3 小时前
用 AI 完整实现 Github 客户端:基于 KMP + SwiftUI + Compose
android·人工智能·ios
特立独行的猫a4 小时前
AI 智能硬件:下一个风口的底层逻辑与产品机会
人工智能·ai·智能硬件·趋势·风口·机会
tedcloud1234 小时前
book-to-skill 怎么部署?把技术书和项目文档变成 AI Agent 可复用知识
linux·运维·服务器·人工智能·开源
世优科技虚拟人4 小时前
AI数字人企业升级全息舱交互,数字人全息仓让展厅展馆更智慧
人工智能·ai数字人·全息舱数字人·全息数字人
webor20064 小时前
<七>从3秒记忆到过目不忘——语言模型的三代进化
人工智能·语言模型·自然语言处理
TechEdu2026064 小时前
[人工智能]SciPy在工程计算中的作用与实践
人工智能·ai·scipy
七牛云行业应用4 小时前
DeepSeek Harness vs Codex vs Claude Code:三款 AI 编程 Harness 深度对比
人工智能·agent·ai编程
无凭4 小时前
拆解 DeerFlow Memory:Agent 的长期记忆到底怎么做?
人工智能·设计模式
格尔曼Noah4 小时前
文本转音频技术选型指南:2026年主流TTS与端到端语音大模型深度对比
人工智能·语音识别