人工标注并制作分割图

前提:已安装labelme在Anaconda3文件下。

1.在“ 开始”菜单中点击“Anaconda3(64bit) ”,选择“ Anaconda Prompt(Anaconda3)”,进入终端,界面如下:

找到labelme.exe所在文件夹D:\ProgramData\Anaconda3\envs\tf_keras\Scripts,然后在终端输入命令:

人工标注用软件为:

点击“Open”打开一张图片或者点击“OpenDir”打开一个图片文件夹,用" CreatePolygons"手动分割区域,如下图为分割出"sky",其余部分默认为“ Background”,也可以认为该背景为云层,为二分类。

点击“Save"保存文件,文件的格式为“.json",通过以下程序将该“.json"文件转为包含3个文件的文件夹:

import json
import os
import os.path as osp
import numpy as np
import PIL.Image
from labelme import utils

#json文件是以字典dict格式存储的
def main():
    #输入的.json文件所在路径
    json_file = 'F:/cai/learn/json/'
    #输出的文件的存储路径
    new_path = 'F:/cai/learn/mask_json/'
    #以列表形式存储文件夹中所有文件的文件名
    list1 = os.listdir(json_file)
    #遍历该文件夹下文件
    for i in range(0, len(list1)):
        #文件的绝对路径
        path = os.path.join(json_file, list1[i])
        if os.path.isfile(path):
            data = json.load(open(path))
            #将data['imageData']的格式转为"numpy.ndarray",数据类型转为"uint8"
            img = utils.img_b64_to_arr(data['imageData'])
            #lbl为标签图像,lbl_names为标签名称
            lbl, lbl_names = utils.labelme_shapes_to_label(img.shape, data['shapes'])
            #将key:value位置颠倒,并存储为字符串格式
            captions = ['%d: %s' % (l, name) for l, name in enumerate(lbl_names)]
            #将字符串中"."替换为"_"
            out_dir = osp.basename(list1[i]).replace('.', '_')
            #输出文件的绝对路径
            out_dir = osp.join(new_path, out_dir)
            #不存在路径就创建一个
            if not osp.exists(out_dir):
                os.mkdir(out_dir)
            #保存变量为图片格式,其中标签图像需改为0-255范围才能显示
            PIL.Image.fromarray(img).save(osp.join(out_dir, 'img.png'))
            PIL.Image.fromarray(np.uint8(lbl)*255).save(osp.join(out_dir, 'label.png'))
            #往记事本中写入标签名称
            with open(osp.join(out_dir, 'label_names.txt'), 'w') as f:
                for lbl_name in lbl_names:
                    f.write(lbl_name + '\n')
            print('Saved to: %s' % out_dir)
if __name__ == '__main__':
    main()

 

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值