正则表达式为空classes_names =['person','bicycle','car','motorcycle','bus','train','traffic','fire hydrant','stop sign']
datasets_list =['train2014']
# ⽣成保存路径,函数抄的(›´ω`‹ )
# if the dir is not exists,make it,else delete it
def mkr(path):
if ists(path):
<(path)
os.mkdir(path)
else:
activities cause more problemsos.mkdir(path)
# ⽣成mask图
def mask_generator(coco, width, height, anns_list):
mask_pic = np.zeros((height, width))
# ⽣成mask - 此处⽣成的是4通道的mask图,如果使⽤要改成三通道,可以将下⾯的注释解除,或者在使⽤图⽚时搜相关的程序改为三通道for single in anns_list:
mask_single = coco.annToMask(single)
mask_pic += mask_single
# 转化为255
for row in range(height):
for col in range(width):
if(mask_pic[row][col]>0):
mask_pic[row][col]=255
mask_pic = mask_pic.astype(int)
return mask_pic
# 转为三通道
# imgs = np.zeros(shape=(height, width, 3), dtype=np.float32)
excel逻辑函数公式大全if# imgs[:, :, 0] = mask_pic[:, :]
# imgs[:, :, 1] = mask_pic[:, :]
# imgs[:, :, 2] = mask_pic[:, :]
# imgs = imgs.astype(np.uint8)
# return imgs
# 处理json数据并保存⼆值mask
def get_mask_data(annFile, mask_to_save):
# 获取COCO_json的数据
coco = COCO(annFile)
# 拿到所有需要的图⽚数据的id - 我需要的类别的categories的id是多少
classes_ids = CatIds(catNms=classes_names)
# 取所有类别的并集的所有图⽚id
# 如果想要交集,不需要循环,直接把所有类别作为参数输⼊,即可得到所有类别都包含的图⽚
imgIds_list =[]
# 循环取出每个类别id对应的有哪些图⽚并获取图⽚的id号
for idx in classes_ids:
imgidx = ImgIds(catIds=idx)# 将该类别的所有图⽚id好放⼊到⼀个列表中
imgIds_list += imgidx
print("搜索id... ", imgidx)
repressing是什么意思
# 去除重复的图⽚
imgIds_list =list(set(imgIds_list))# 把多种类别对应的相同图⽚id合并
# ⼀次性获取所有图像的信息
image_info_list = coco.loadImgs(imgIds_list)
# 对每张图⽚⽣成⼀个mask
for imageinfo in image_info_list:
# 获取对应类别的分割信息
annIds = AnnIds(imgIds=imageinfo['id'], catIds=classes_ids, iscrowd=None)
anns_list = coco.loadAnns(annIds)
divine帝王手表价格# ⽣成⼆值mask图
mask_image = mask_generator(coco, imageinfo['width'], imageinfo['height'], anns_list)
mask_image = mask_generator(coco, imageinfo['width'], imageinfo['height'], anns_list) # 保存图⽚
file_name = mask_to_save +'/'+ imageinfo['file_name'][:-4]+'.jpg'
plt.imsave(file_name, mask_image)
print("已保存mask图⽚: ", file_name)
if __name__ =='__main__':
# 按单个数据集进⾏处理
for dataset in datasets_list:
# ⽤来保存最后⽣成的mask图像⽬录
python解析json文件#  mask_to_save = savepath + 'mask_images/' + dataset  # 三通道mask图存储路径
mask_to_save = savepath +'mask_images_RGBA/'+ dataset
mkr(savepath +'mask_images/')
# ⽣成路径
mkr(mask_to_save)
# 获取要处理的json⽂件路径
annFile ='{}/annotations/instances_{}_sub.json'.format(dataDir, dataset) # 处理数据
get_mask_data(annFile, mask_to_save)
print('Got all the masks of {} from {}'.format(classes_names, dataset))
代码(⼆) - 将mask图画在原图上
2. 三通道效果图
3. 掩码图

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。