HAN&DAI

  • 首页
  • 遥感应用
  • GIS应用
  • 机器学习
  • 实用工具
  • 文章链接
  • 遥感数据集
HAN&DAI
遥感与地理信息技术交流社区
  1. 首页
  2. 实用工具
  3. 正文

labelme等标注软件多分类(二分类)json文件转mask(可rgb显示或one-hot显示)

2023年5月30日 700点热度 2人点赞 0条评论

提出问题

研究中经常利用labelme等标注软件进行标注,但对于这些软件保存的json文件(以坐标形式保存的)如何转换成mask存在麻烦。网上的帖子给出的方法是改labelm配置文件等,也试过,但每次修改存在麻烦,因此,自己改进了一些代码,可以迅速转换.json->mask的图片表示。具体的转换过程如下图,即将原图和json文件混合的文件夹转化成两个文件夹,一个存放原图,一个存放标签。

解决方法

import cv2
import numpy as np
import json
import glob
import os

category_types = ["Background", "IP", "CRSwNP", "normal"]

for i in glob.glob('./data/*.jpg'):
    name = os.path.split(i)[-1][:-4]
    print (name)
    img = cv2.imread(i)
    h, w = img.shape[:2]
    mask = np.zeros([h, w, 3], np.uint8)    # 创建一个大小和原图相同的空白图像
    #mask = np.zeros([h, w, 3], np.uint8) #单通道

    with open("./data/{}.json".format(name), "r") as f:
        label = json.load(f)

    shapes = label["shapes"]
    for shape in shapes:
        category = shape["label"]
        points = shape["points"]
        # 填充
        points_array = np.array(points, dtype=np.int32)
        if category_types.index(category) == 1:
            mask = cv2.fillPoly(mask, [points_array], (0, 255, 0))
        elif category_types.index(category) ==2:    
            mask = cv2.fillPoly(mask, [points_array], (0, 0, 255))
        elif category_types.index(category) == 3:    
            mask = cv2.fillPoly(mask, [points_array], (255, 0, 0))
        else:
            mask = cv2.fillPoly(mask, [points_array], (0, 0, 0))
    #mask = cv2.fillPoly(mask, [points_array], category_types.index(category))##单通道
    cv2.imwrite("./datasets/masks/{}.png".format(name), mask)
    cv2.imwrite("./datasets/images/{}.png".format(name), img)

结果

Post Views: 698

相关文章:

  1. 遥感专用深度学习框架LuoJiaNet系列学习(1)---源码安装
  2. Google Colab中摒弃了TF 1.X,怎么重装?
  3. cuda 11.x如何配置tensorflow 1.x?(以3090为例)
  4. 图像加/解密简单系统
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 实用技巧 机器学习 遥感影像应用
最后更新:2023年5月30日

HAN&DAI

RS和GIS研究兴趣者,永远在学习的路上!

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

文章目录
  • 提出问题
  • 解决方法
  • 结果
浏览最多的文章
  • BUG:ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (1,462)
  • BUG:“ModuleNotFoundError: No module named '_ext'”的解决方案 (1,229)
  • 利用GEE下载指定区域Landsat8影像 (1,175)
  • 利用arcgis制作深度学习标签数据(以二分类为例) (899)
  • 利用传统机器学习方法进行遥感影像分类-以随机森林(RF)为例 (806)

COPYRIGHT © 2025 HAN&DAI. ALL RIGHTS RESERVED. QQ交流群:821388027

Theme Kratos Made By Seaton Jiang