【Python】找到最大连通区域,并画出bounding box

该博客介绍了如何使用Python的skimage库找出图片的最大连通区域,并展示如何画出该区域的bounding box。首先对原始图像进行二值化处理,然后应用label函数标识所有连通区域,最后修改代码仅显示最大的连通区域。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

一、找出图片的最大连通区域

              原始图像

mask = get_mask()
# 进行图像的二值化处理
max_value = np.max(mask)
#print(max_value)
ret, ee = cv2.threshold(mask, 0.15*max_value, max_value, cv2.THRESH_BINARY)

        二值化处理后的图像

使用skimage中的label函数,标出二值化后的图像的所有连通区域。

def largestConnectComponent(bw_img):
    labeled_img, num = label(bw_img, neighbors=4, background=0, return_num=True)
    max_label = 0
    max_num = 0
    for i in range(0, num):
        if np.sum(labeled_img == 1) > max_num:
            max_num = np.sum(labeled_img == 1)
            max_label = i
    mcr = (labeled_img == max_label)
    return mcr

 label函数的返回值有很多的属性,包括求连通区域的面积、中心坐标、画边界框等等,这里使用的是画bounding box。

    fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(6, 6))
    ax.imshow(mcr)
    for region in regionprops(labeled_img):
        # skip small images
        if region.area < 50:
            continue
        #print(regionprops(labeled_img)[max_label])
        minr, minc, maxr, maxc = region.bbox

        rect = mpatches.Rectangle((minc, minr), maxc - minc, maxr - minr,
                              fill=False, edgecolor='red', linewidth=2)
        ax.add_patch(rect)

上面的代码是框出了所有的区域,如果只框最大的连通区域的话,代码如下:

    fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(6, 6))
    ax.imshow(mcr)

    minr, minc, maxr, maxc = regionprops(labeled_img)[max_label].bbox
    rect = mpatches.Rectangle((minc, minr), maxc - minc, maxr - minr,
                              fill=False, edgecolor='red', linewidth=2)
    ax.add_patch(rect)

 

 

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值