本文主要是介绍计算图像分割mask的灰度级个数、以及删除空的分割数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、查询mask类别
图像分割的mask是图片格式的话,往往是阈值图像,这样有几个阈值就是分割几个类别的
这里提供代码检测mask的类别个数
摆放如上(只要有mask即可),然后copy下面代码,放在data的同级目录即可:
import os
import numpy as np
from PIL import Image
from tqdm import tqdmdef fun(pth):root = pthro = [os.path.join(root,y) for y in os.listdir(root)]la = []for i in tqdm(ro):j = Image.open(i).convert('L')j = np.unique(np.array(j))for iii in j:if iii not in la:la.append(iii)print(la)if __name__ == '__main__':root = './data/masks'fun(pth=root)
输出如下,可以看出这个数据分割是2类的(加上背景nc=3)
2、删去空的data
其实分割的mask中,如果有label是空,也是数据增广的一种,并不是什么坏事。
就像分类中,还有一个其他类别,里面存放的乱七八糟的图片。
目标检测也是,label里面bbox和class全部为空即可。
不过,要是删去这些空的话,也很简单,这里提供图像分割的代码
摆放如下:
复制下面代码,放在data的同级目录即可:
import os
from tqdm import tqdm
import cv2
import numpy as npdef main(pth,im,ms):img_path = [os.path.join(pth,i) for i in os.listdir(pth)]for i in tqdm(img_path):j = i.replace('images','masks').replace(im,ms)tmp = cv2.imread(j)if len(np.unique(tmp)) ==1 :os.remove(i)os.remove(j)if __name__=='__main__':root = './data/images' # data 路径img_fm = '.jpg' # data 的后缀偏移mask_fm = '_mask.png' # mask 的后缀偏移main(pth=root,im=img_fm,ms=mask_fm)
这里的img_fm,mask_fm 是data到mask图片的偏移路径
运行如下,就可以删除了
这篇关于计算图像分割mask的灰度级个数、以及删除空的分割数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!