参考链接:https://blog.csdn.net/beilunc7/article/details/135302260?ops_request_misc=&request_id=&biz_id=102&utm_term=labelme%20json%E8%BD%ACpng&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-1-135302260.nonecase&spm=1018.2226.3001.4450

环境的配置没有多大的要求,就是需要一个名为labelme的虚拟环境,labelme需要提前安装在labelme的环境。

运行以下代码rgb_images435更换成自己的文件夹。

import os

json_folder = r"H:\rgb\rgb_images435"#包含json的文件夹
#  获取文件夹内的文件名
FileNameList = os.listdir(json_folder)
#  激活labelme环境
os.system("activate labelme")
for i in range(len(FileNameList)):
    #  判断当前文件是否为json文件
    if(os.path.splitext(FileNameList[i])[1] == ".json"):
        json_file = json_folder + "\\" + FileNameList[i]
        #  将该json文件转为png
        os.system("labelme_json_to_dataset " + json_file)

 运行后生成以下文件夹

 提取文件夹中png图片,path_json_to_data = "H:\\rgb\\rgb_images435\\"
path_save_png = "H:\\rgb\\rgb_images435\\label\\"修改成自己的路径

import os
# import cv2
import numpy as np
import shutil
import glob

path_json_to_data = "H:\\rgb\\rgb_images435\\"
path_save_png = "H:\\rgb\\rgb_images435\\label\\"
'''
   将标签图从json文件中批量取出
   :return:
   '''
for eachfile in os.listdir(path_json_to_data):
    path1 = os.path.join(path_json_to_data, eachfile)  # 获取单个json文件夹的目录
    if os.path.isdir(path1):  # 判断path1路径是否存在
        if os.path.exists(path1 + '\\label.png'):  # 判断path1路径下label.png是否存在
            path1 = os.path.join(path1, 'label.png')  # 获取PNG所在的路径,准备等待复制
            path2 = os.path.join(path_save_png, (eachfile.split('_')[0] + '.png'))  # 将png复制到path2路径下的文件夹中去
            shutil.copy(path1, path2)  # 将path1文件复制到path2
            print(eachfile + ' successfully moved')

 生成以下内容

修改png中mask的颜色  r[np.where(r != 0)] = 1 #想要白色就改成255

import os
import cv2
from PIL import Image
import numpy as np
bace_path = "H:\\rgb\\rgb_images435\\label\\"
save_path = 'H:\\rgb\\rgb_images435\\train\\'

for im in os.listdir(bace_path):
    img = cv2.imread(os.path.join(bace_path, im))
    # img = Image.open(os.path.join(bace_path, im))
    b, g, r = cv2.split(img)
    r[np.where(r != 0)] = 1 #白色就改成255
    cv2.imwrite(os.path.join(save_path, im), r)

以上就是全部工作内容。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐