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)