欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

连通域 ---- 对自己学习有帮助的资源集锦

程序员文章站 2023-10-15 23:40:41
前言学无止境,在学习连通域的理论及使用方法时,有以下文章及代码为我提供了很大帮助,特此附上链接,表示感谢!希望对您也有参考借鉴的意义!大佬笔记python数字图像处理(18):高级形态学处理个人笔记1. 求一张图中某类别对应分割区域(矩形)凸包顶点坐标(xmin, ymin, xmax, ymax),常用于利用分割label.png得到目标检测label.xml或label.txt。"""areas:各类别连通域阈值的字典;selected_label:选择的某一张2D或3D图;cla...

前言

学无止境,在学习连通域的理论及使用方法时,有以下文章及代码为我提供了很大帮助,特此附上链接,表示感谢!希望对您也有参考借鉴的意义!

大佬笔记

  1. python数字图像处理(18):高级形态学处理

个人笔记

1. 求一张图中某类别对应分割区域(矩形)凸包顶点坐标(xmin, ymin, xmax, ymax),常用于利用分割label.png得到目标检测label.xml或label.txt。
"""
areas:各类别连通域阈值的字典;
selected_label:选择的某一张2D或3D图;
class_id:各类别索引值+1,比如类别有['apple','pear','banana'],类别apple的索引值为0,class_id为1;
"""

from skimage import filters, morphology, segmentation, measure
import numpy as np

def count_coors_classid(areas, selected_label, class_id):
    class_label = np.zeros_like(selected_label)
    class_label[selected_label == class_id] = class_id

    thresh = filters.threshold_otsu(class_label)  # 阈值分割
    bw = morphology.closing(class_label > thresh, morphology.square(3))  # 闭运算(先膨胀后腐蚀)

    cleared = bw.copy()  # 复制
    segmentation.clear_border(cleared)  # 清除连接到标签图像边界的对象

    label_image = measure.label(cleared)  # 连通区域标记
    borders = np.logical_xor(bw, cleared)  # 异或

    label_image[borders] = -1

    for region in measure.regionprops(label_image):  # 循环得到每一个连通区域属性集
        # 忽略小区域
        if region.area < areas[class_id]:
            continue
        # 绘制外包矩形(若region为3d,则region.bbox为xmin, ymin, zmin, xmax, ymax, zmax)
        xmin, ymin, xmax, ymax = region.bbox
        # xmin, ymin, zmin, xmax, ymax, zmax = region.bbox
        print('xmin, ymin, xmax, ymax --- ', xmin, ymin, xmax, ymax)
        # print('xmin, ymin, zmin, xmax, ymax, zmax ---', xmin, ymin, zmin, xmax, ymax, zmax) 

本文地址:https://blog.csdn.net/weixin_40051325/article/details/107362939