python opencv 图像切割_【图像后处理】python+OpenCV填充孔洞

本文介绍了如何使用Python和OpenCV库进行图像后处理,特别是针对图像分割后的孔洞填充。通过floodFill函数定位孔洞并进行填充,适用于单类和多类分割场景。同时,还讨论了如何根据孔洞面积设置阈值,选择性地填充特定大小的孔洞。代码已验证,可用于实际图像处理任务。
摘要由CSDN通过智能技术生成

我们在进行图像分割后,分割结果有时会有一些小孔洞,如图1所示,其中黑白两色表示两种不同的类别。一般情况下,这些孔洞属于错分情况,为了优化结果,我们通常对这些孔洞进行填充。今天我们就用python语言基于OpenCV实现孔洞填充。

2d1de5ade432f3761267d84c9b0aeb54.png
图1 有孔洞的分割图像

我们要用到的函数是OpenCV里的floodFill函数。使用floodFill函数可以得到只标记孔洞的像素矩阵(孔洞值为0,非孔洞值为指定值)。有了孔洞的位置填充孔洞就容易多了。python代码如下。

import 

填充结果如图2所示,三个孔洞均被填充。

fe006ebad685f68ee55b0469f0b51ee8.png
图2 填充结果

现在又有一个问题,就是说如果我们的多类分割呢,就像图3所示。我们可以利用for循环分颜色进行单类别填充孔洞,然后进行合并。python代码如下。

5259868081f26cd79528186c643de4d0.png
图3 有孔洞的多类图像分割
import cv2;
import numpy as np;

def FillHole_RGB(imgPath,SavePath):
    # 读取图像为uint32,之所以选择uint32是因为下面转为0xbbggrr不溢出
    im_in_rgb = cv2.imread(imgPath).astype(np.uint32)
    
    # 将im_in_rgb的RGB颜色转换为 0xbbggrr
    im_in_lbl = im_in_rgb[:,:,0] + (im_in_rgb[:,:,1] << 8) + (im_in_rgb[:,:,2] << 16)
    
    # 将0xbbggrr颜色转换为0,1,2,...
    colors, im_in_lbl_new = np.unique
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值