JSON是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成,在工作中,大家经常会用到json转换,那json格式怎么转换成图片?下面来我们就来给大家讲解一下。
首先要把所有你需要转换的json文件放在一个文件夹里,然后把这个文件夹的路径填入到下面的json_file就可以了。程序运行完会在文件下生成两个文件夹:mask和mask_viz
mask中有png图,和两个标签文件
mask_viz中是可视化的mask图
程序:
#!/usr/bin/python #- * -coding: UTF - 8 - * -#!H: \Anaconda3\ envs\ new_labelme\ python.exe import argparse import json import os import os.path as osp import base64 import warnings import PIL.Image import yaml from labelme import utils import cv2 import numpy as np from skimage import img_as_ubyte# from sys import argv def main(): warnings.warn("This script is aimed to demonstrate how to convert the\n" "JSON file to a single image dataset, and not to handle\n" "multiple JSON files to generate a real-use dataset.") json_file = "/home/jfw/needlabel/6_json/"# freedom list_path = os.listdir(json_file) print('freedom =', json_file) for i in range(0, len(list_path)): path = os.path.join(json_file, list_path[i]) if os.path.isfile(path): data = json.load(open(path)) img = utils.img_b64_to_arr(data['imageData']) lbl, lbl_names = utils.labelme_shapes_to_label(img.shape, data['shapes']) captions = ['%d: %s' % (l, name) for l, name in enumerate(lbl_names)] lbl_viz = utils.draw_label(lbl, img, captions)# out_dir = osp.basename(path) .replace('.', '_') out_dir = osp.basename(path) .split('.json')[0] save_file_name = out_dir# out_dir = osp.join(osp.dirname(path), out_dir) if not osp.exists(json_file + 'mask'): os.mkdir(json_file + 'mask') maskdir = json_file + 'mask' if not osp.exists(json_file + 'mask_viz'): os.mkdir(json_file + 'mask_viz') maskvizdir = json_file + 'mask_viz' out_dir1 = maskdir# if not osp.exists(out_dir1): #os.mkdir(out_dir1)# PIL.Image.fromarray(img) .save(out_dir1 + '\\' + save_file_name + '_img.png') PIL.Image.fromarray(lbl) .save(out_dir1 + '/' + save_file_name + '.png') PIL.Image.fromarray(lbl_viz) .save(maskvizdir + '/' + save_file_name + '_label_viz.png')# if not osp.exists(json_file + '\\' + 'mask_png'): #os.mkdir(json_file + '\\' + 'mask_png')# mask_save2png_path = json_file + '\\' + 'mask_png'################################# mask_pic = cv2.imread(out_dir1 + '\\' + save_file_name + '_label.png', )# print('pic1_deep:', mask_pic.dtype)# mask_dst = img_as_ubyte(lbl)# mask_pic# print('pic2_deep:', mask_dst.dtype)# cv2.imwrite(mask_save2png_path + '\\' + save_file_name + '_label.png', mask_dst)################################## with open(osp.join(out_dir1, 'label_names.txt'), 'w') as f: for lbl_name in lbl_names: f.write(lbl_name + '\n') warnings.warn('info.yaml is being replaced by label_names.txt') info = dict(label_names = lbl_names) with open(osp.join(out_dir1, 'info.yaml'), 'w') as f: yaml.safe_dump(info, f, default_flow_style = False) print('Saved to: %s' % out_dir1) if __name__ == '__main__': #base64path = argv[1] main()
Json转换有哪些方式?
1. Gson
1.添加依赖
<dependency > <groupId>com.google.code.gson</groupId> < artifactId > gson < /artifactId> < version > 2.2 .4 < /version> < /dependency>
2.转化方法
①.对象转Json:
Gson gson = new Gson();
String json = gson.toJson(Object object);
②.Json转对象:
gson.fromJson(String json, Class classOfT)
③.集合转Json:
Gson gson = new Gson();
String json = gson.toJson(Object object);
④.Json转集合:
TypeToken typeOfT = new TypeToken(){};
T fromJson = (T)gson.fromJson(json, typeOfT.getType());
2. Json-lib
1.添加依赖
<dependency > <groupId>net.sf.json-lib</groupId> < artifactId > json - lib < /artifactId> < version > 2.4 < /version> < classifier > jdk15 < /classifier> < /dependency>
2.转化方法
①.对象转Json:
JSONObject fromObject = JSONObject.fromObject(Object object);
String string = fromObject.toString();
②.Json转对象:
JSONObject fromObject2 = JSONObject.fromObject(string);
Object bean =JSONObject.toBean(JSONObject jsonObject, Class beanClass)
③.集合转Json:
JSONArray fromObject = JSONArray.fromObject(Object object);
String string = fromObject.toString();
④.Json转集合:
JSONArray fromObject2 = JSONArray.fromObject(string);
Collection collection = JSONArray.toCollection
(JSONArray jsonArray, Class objectClass)
3. Fastjson
Fastjson是阿里巴巴公司开发的,Java语言编写的,JSON的处理器。
1.添加依赖
<dependency > <groupId>com.alibaba</groupId> < artifactId > fastjson < /artifactId> < version > 1.2 .31 < /version> < /dependency>
2.转化方法
①对象转Json: JSON.toJSONString(Object object);
②Json转对象: JSON.parseObject(String text,Class Class);
③集合转Json: JSON.toJSONString(Object object)
④Json转集合: JSON.parseArray(String text,Class Class);
其实JSON是一种轻量级的数据交换格式,有了json这样的转换编辑工具,使得大家的工作效率更加进步哦!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。
推荐阅读: