连通域 ---- 对自己学习有帮助的资源集锦
程序员文章站
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. 求一张图中某类别对应分割区域(矩形)凸包顶点坐标(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
上一篇: PS教程之LR调色日系后期教程分享
下一篇: Python代码编写规范,你真的会吗?