通过labelme得到json文件并转换为png

1、安装labelme

#创建虚拟环境并安装labelme
conda create --name=labelme python=2.7(这一步python=*选择自己的Python版本)
#提前确定好要安装的版本,不然后后续变动时,相当于要重新安装一遍
activate labelme
conda install pyqt
#安装时可能pip版本不够,需要换源后更新
pip install labelme

2、使用labelme进行标注

activate labelme
labelme

3、将jupyter notebook 在虚拟环境中激活

conda activate labelme
conda install ipykernel
python -m ipykernel install --name labelme

#如果打卡notebook后,内核无法启动,可尝试查看ipykernel版本
pip list

#然后更新
pip install --upgrade ipykernel

4、安装需要的库

#cv2
pip3 install opencv-python

5、运行代码进行转换

通过本代码得到标签图片,仅在三通道上有数值。

from __future__ import print_function
import argparse
import glob
import math
import json
import os
import os.path as osp
import shutil
import numpy as np
import PIL.Image
import PIL.ImageDraw
import cv2


def json2png(json_folder, png_save_folder):
    if osp.isdir(png_save_folder):
        shutil.rmtree(png_save_folder)
    os.makedirs(png_save_folder)
    json_files = os.listdir(json_folder)
    for json_file in json_files:
        json_path = osp.join(json_folder, json_file)
        os.system("labelme_json_to_dataset {}".format(json_path))
        label_path = osp.join(json_folder, json_file.split(".")[0] + "_json/label.png")
        png_save_path = osp.join(png_save_folder, json_file.split(".")[0] + ".png")
        label_png = cv2.imread(label_path, 0)
        label_png[label_png > 0] = 255
        cv2.imwrite(png_save_path, label_png)
        # shutil.copy(label_path, png_save_path)
        # break


if __name__ == '__main__':
    # !!!!你的json文件夹下只能有json文件不能有其他文件
    json2png(json_folder= r'C:\Users\10045\Desktop\label', png_save_folder= r'C:\Users\10045\Desktop\label2')

6、将label覆盖到原图上,并将非标记位置变为黑色。

import cv2
img = 'img.png'
label = 'label.png'
img_png = cv2.imread(img)
label_png = cv2.imread(label)
#单通道标签注释掉下面两行
label_png[:,:,0]=label_png[:,:,2]
label_png[:,:,1]=label_png[:,:,2]
img_png[label_png == 0] = 0
#img_png[label_png != 0] = img_png
#cv2.imshow('img',label_png)
cv2.imshow('img',img_png)
cv2.waitKey(0)
cv2.destroyAllWindows()
#cv2.imwrite('1.png', img_png)

你可能感兴趣的:(python,开发语言)