精华内容
下载资源
问答
  • # -*- coding:utf-8 -*- # !/usr/bin/env python ...import json import matplotlib.pyplot as plt import skimage.io as io import cv2 from labelme import utils import numpy as np import glob ...
    # -*- coding:utf-8 -*-
    # !/usr/bin/env python
    
    import argparse
    import json
    import matplotlib.pyplot as plt
    import skimage.io as io
    import cv2
    from labelme import utils
    import numpy as np
    import glob
    import PIL.Image
    
    class MyEncoder(json.JSONEncoder):
        def default(self, obj):
            if isinstance(obj, np.integer):
                return int(obj)
            elif isinstance(obj, np.floating):
                return float(obj)
            elif isinstance(obj, np.ndarray):
                return obj.tolist()
            else:
                return super(MyEncoder, self).default(obj)
    
    class labelme2coco(object):
        def __init__(self, labelme_json=[], save_json_path='./tran.json'):
            '''
            :param labelme_json: 所有labelme的json文件路径组成的列表
            :param save_json_path: json保存位置
            '''
            self.labelme_json = labelme_json
            self.save_json_path = save_json_path
            self.images = []
            self.categories = []
            self.annotations = []
            # self.data_coco = {}
            self.label = []
            self.annID = 1
            self.height = 0
            self.width = 0
    
            self.save_json()
    
        def data_transfer(self):
    
            for num, json_file in enumerate(self.labelme_json):
                with open(json_file, 'r') as fp:
                    data = json.load(fp)  # 加载json文件
                    self.images.append(self.image(data, num))
                    for shapes in data['shapes']:
                        label = shapes['label']
                        if label not in self.label:
                            self.categories.append(self.categorie(label))
                            self.label.append(label)
                        points = shapes['points']#这里的point是用rectangle标注得到的,只有两个点,需要转成四个点
                        points.append([points[0][0],points[1][1]])
                        points.append([points[1][0],points[0][1]])
                        self.annotations.append(self.annotation(points, label, num))
                        self.annID += 1
    
        def image(self, data, num):
            image = {}
            img = utils.img_b64_to_arr(data['imageData'])  # 解析原图片数据
            # img=io.imread(data['imagePath']) # 通过图片路径打开图片
            # img = cv2.imread(data['imagePath'], 0)
            height, width = img.shape[:2]
            img = None
            image['height'] = height
            image['width'] = width
            image['id'] = num + 1
            image['file_name'] = data['imagePath'].split('/')[-1]
    
            self.height = height
            self.width = width
    
            return image
    
        def categorie(self, label):
            categorie = {}
            categorie['supercategory'] = 'component'
            categorie['id'] = len(self.label) + 1  # 0 默认为背景
            categorie['name'] = label
            return categorie
    
        def annotation(self, points, label, num):
            annotation = {}
            annotation['segmentation'] = [list(np.asarray(points).flatten())]
            annotation['iscrowd'] = 0
            annotation['image_id'] = num + 1
            # annotation['bbox'] = str(self.getbbox(points)) # 使用list保存json文件时报错(不知道为什么)
            # list(map(int,a[1:-1].split(','))) a=annotation['bbox'] 使用该方式转成list
            annotation['bbox'] = list(map(float, self.getbbox(points)))
            annotation['area'] = annotation['bbox'][2] * annotation['bbox'][3]
            # annotation['category_id'] = self.getcatid(label)
            annotation['category_id'] = 1
            annotation['id'] = self.annID
            return annotation
    
        def getcatid(self, label):
            for categorie in self.categories:
                if label == categorie['name']:
                    return categorie['id']
            return 1
    
        def getbbox(self, points):
            # img = np.zeros([self.height,self.width],np.uint8)
            # cv2.polylines(img, [np.asarray(points)], True, 1, lineType=cv2.LINE_AA)  # 画边界线
            # cv2.fillPoly(img, [np.asarray(points)], 1)  # 画多边形 内部像素值为1
            polygons = points
    
            mask = self.polygons_to_mask([self.height, self.width], polygons)
            return self.mask2box(mask)
    
        def mask2box(self, mask):
            '''从mask反算出其边框
            mask:[h,w]  0、1组成的图片
            1对应对象,只需计算1对应的行列号(左上角行列号,右下角行列号,就可以算出其边框)
            '''
            # np.where(mask==1)
            index = np.argwhere(mask == 1)
            rows = index[:, 0]
            clos = index[:, 1]
            # 解析左上角行列号
            left_top_r = np.min(rows)  # y
            left_top_c = np.min(clos)  # x
    
            # 解析右下角行列号
            right_bottom_r = np.max(rows)
            right_bottom_c = np.max(clos)
    
            # return [(left_top_r,left_top_c),(right_bottom_r,right_bottom_c)]
            # return [(left_top_c, left_top_r), (right_bottom_c, right_bottom_r)]
            # return [left_top_c, left_top_r, right_bottom_c, right_bottom_r]  # [x1,y1,x2,y2]
            return [left_top_c, left_top_r, right_bottom_c - left_top_c,
                    right_bottom_r - left_top_r]  # [x1,y1,w,h] 对应COCO的bbox格式
    
        def polygons_to_mask(self, img_shape, polygons):
            mask = np.zeros(img_shape, dtype=np.uint8)
            mask = PIL.Image.fromarray(mask)
            xy = list(map(tuple, polygons))
            PIL.ImageDraw.Draw(mask).polygon(xy=xy, outline=1, fill=1)
            mask = np.array(mask, dtype=bool)
            return mask
    
        def data2coco(self):
            data_coco = {}
            data_coco['images'] = self.images
            data_coco['categories'] = self.categories
            data_coco['annotations'] = self.annotations
            return data_coco
    
        def save_json(self):
            self.data_transfer()
            self.data_coco = self.data2coco()
            # 保存json文件
            json.dump(self.data_coco, open(self.save_json_path, 'w'), indent=4, cls=MyEncoder)  # indent=4 更加美观显示
    
    
    labelme_json = glob.glob('C:\\Users\\Desktop\\val\\*.json')
    # labelme_json=['./1.json']
    
    labelme2coco(labelme_json, './new.json')
    
    

    参考:https://github.com/wucng/TensorExpand/tree/master/TensorExpand/Object%20detection/Data_interface/MSCOCO

     

    展开全文
  • 多个.json文件合成一个文件

    千次阅读 2019-12-29 09:21:29
    path:文件夹的路径 文件夹下放置多个json文件 writeFile:你要生成的文件 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io....

    1.首先把所有json放在一个文件夹下,

    path:文件夹的路径 文件夹下放置多个json文件
    writeFile :你要生成的文件
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class ReadFromFile {
    
        /**
         * 以行为单位读取文件,常用于读面向行的格式化文件
         */
        public static void readFileByLines(String fileName, String writefileName) {
            File file = new File(fileName);
            BufferedReader reader = null;
            try {
                System.out.println("以行为单位读取文件内容,一次读一整行:");
                reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
                String tempString = null;
                int line = 1;
                // 一次读入一行,直到读入null为文件结束
                while ((tempString = reader.readLine()) != null) {
                    // 显示行号
                    System.out.println("line " + line + ": " + tempString);
                    line++;
    
                    appendMethodB(writefileName, tempString + "\r\n");
                }
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e1) {
                    }
                }
            }
        }
    
        /**
         * 递归讀取目录下的所有文件及子目录下所有文件
         */
        public static void findDir(String patn, String writefileName) {
            File dir = new File(patn);
    
            if (dir.isDirectory()) {
                System.out.println("获取文件夹下的集合");
                String[] children = dir.list();
                // 递归读取目录中的子目录下
                for (int i = 0; i < children.length; i++) {
                    String chidPaath = patn + '/' + children[i];
                    File child = new File(chidPaath);
                    if (child.isDirectory()) {
                        System.out.println("文件夹");
                        findDir(chidPaath, writefileName);
                    } else {
                        System.out.println("文件-----讀取" + child.getName());
                        readFileByLines(chidPaath, writefileName);
                    }
                }
            } else {
                readFileByLines(patn, writefileName);
            }
        }
    
        /**
         * B方法追加文件:使用FileWriter
         */
        public static void appendMethodB(String fileName, String content) {
            try {
                // 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
                FileWriter writer = new FileWriter(fileName, true);
                writer.write(content);
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            String path = "C:\\Users\\Administrator\\Desktop\\data_location-master";// 选择你的文件
            String writeFile = "D:\\JavaCode1.text";//选择你要生成的文件
            File file = new File(writeFile);
            if (!file.exists()) {
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
            ReadFromFile.findDir(path, writeFile);
        }
    }

    以下成功案例,执行成功点个赞谢谢 

    展开全文
  • java - 两个json合成一个

    千次阅读 2018-07-30 19:07:24
    import net.sf.json.JSONObject; public class JSONCombine { public static void main(String[] args) { JSONObject jsonOne = new JSONObject(); JSONObject jsonTwo = n...
    import net.sf.json.JSONObject;  
      
    public class JSONCombine  
    {  
        public static void main(String[] args)  
        {  
            JSONObject jsonOne = new JSONObject();  
            JSONObject jsonTwo = new JSONObject();  
      
            jsonOne.put("name", "kewen");  
            jsonOne.put("age", "24");  
      
            jsonTwo.put("hobbit", "Dota");  
            jsonTwo.put("hobbit2", "wow");  
      
            JSONObject jsonThree = new JSONObject();  
      
            jsonThree.putAll(jsonOne);  
            jsonThree.putAll(jsonTwo);  
      
            System.out.println(jsonThree.toString());  
      
        }  
    }  

     

    https://blog.csdn.net/lumengjie313/article/details/26372011

    展开全文
  • 在.Net开发的过程中,经常遇见需要把先后获取的数据叠加在一起,而后台获取数据的方式一般是ajax获取json格式的数据,就需要创建一个全局的var变量,把先后获取的json都放在里面,表格或者图形生成时在for循环。...

    在.Net开发的过程中,经常遇见需要把先后获取的数据叠加在一起,而后台获取数据的方式一般是ajax获取json格式的数据,就需要创建一个全局的var变量,把先后获取的json都放在里面,表格或者图形生成时在for循环。代码如下:

    var resultJsonObject;

    //此方法是合并2个json
    function mergejson(jsonbject1, jsonbject2) {
        var str1 = '';
        var str2 = '';
        var str3 = '';
        if (jsonbject1 != undefined) {
            str1 = JSON.stringify(jsonbject1); //将JSON对象转化为JSON字符
        }

        if (str1 != undefined) {

            str1 = str1.substr(1, str1.length - 2);
        }
        if (jsonbject2 != undefined) {
            str2 = JSON.stringify(jsonbject2); //将JSON对象转化为JSON字符
        }

        if (str2 != undefined) {

            str2 = str2.substr(1, str2.length - 2);
        }
        if ((str1 + str2) == undefined) {
            str3 = '[]';
        }
        else if ((str1 + str2) == '') {
            str3 = '[]';
        }
        else if (str1 == undefined) {
            str3 = '[' + str2 + ']';
        } else if (str1 == '') {
            str3 = '[' + str2 + ']';
        } else if (str2 == undefined) {
            str3 = '[' + str1 + ']';
        } else if (str2 == '') {
            str3 = '[' + str1 + ']';
        } else {
            str3 = '[' + str1 + ',' + str2 + ']';
        }

        if (str3 != undefined) {

            var obj = JSON.parse(str3); //由JSON字符串转换为JSON对象
            return obj;
        } else { return [{}]; }
    }

    展开全文
  • 要想把java多个对象放入一个JSONArray对象输出, ** 首先需要先把java单个对象转换成JSONArray对象 ** ArrayList<SongList> arrayList1 = songListService.selectAllSongList(userId); ArrayList<SongList&...
  • python实现多个json文件合并到个json文件! 1. 代码 # !/usr/bin/env python # -*- encoding: utf-8 -*- """ @author: kaifang zhang @license: Apache License @time: 2020/12/09 @contact: kaifang.zkf@dtwave-...
  • 多个json文件合并个json

    千次阅读 2017-08-04 15:05:00
    哈哈,刚开始的时候脸蒙逼,后来有开发的朋友给的意见,写一下哈哈 // 数据 var datas=[  {   "goods_id":1  },  {  "goods_id":1  },  {  "goods_id":1  } ] // 数据的名字 var names=...
  • 个JSON合并一个JSON

    千次阅读 2019-01-14 17:56:18
    //json对象 function JSONcompose(json1,json2){ var json1 = JSON.stringify(json1) var json2 = JSON.stringify(json2) var newsJSON newsJSON = json1.substring(0,json1.length-1)+&quot;,&...
  • 火山视窗JSON合成与解析 、JSON介绍与模块配置 1、JSON介绍。 JSON是种轻量级的数据交换格式,可以理解为易语言当中的“写配置项”功能。 当然JSON功能要更,可以多层嵌套存储一些复杂的数据。 JSON的...
  • 火山安卓JSON合成与解析 、JSON介绍与模块配置 1、JSON介绍。 JSON是种轻量级的数据交换格式,可以理解为易语言当中的“写配置项”功能。 当然JSON功能要更,可以多层嵌套存储一些复杂的数据。 JSON的...
  • 1.nodejs中把3个json中的同一个字段 合并到第一个Json字符串中,直接上代码 let newJson; let newJson1 = '{"currtype1":"value1","amount1":"111","key3":{"key31":"value 31"}}'; let newJson2 = '{"currtype1":...
  • 1.作用:将多个对象{} 合并成一个独立对象。 2.使用方式: Obejct.assign(合并的对象,传入合并中的对象....) let user = {name:'无敌人',age:19}; let page = {pageSize:10,currentPage:1}; let newObj = {...
  • python 多个json文件合并

    千次阅读 2020-04-10 11:50:39
    记录下,之前转载的,链接找不到 import os #获取目标文件夹的路径 filedir ='C:/Users/...#打开当前目录下的result.json文件,如果没有则创建 f=open('results2.json','w') #先遍历文件名`在这里插入代码片` fo...
  • 1.将多个json对象合并成一个json对象

    万次阅读 2018-02-01 09:01:02
    json 的 js 方法 : $.fn.serializeJson=function(){  var serializeObj={};  var array=this.serializeArray();  var str=this.serialize();  $(array).each(function(){  if...
  • 合成JSON字符串 接上篇。主要是包装了一下Android自带的JSON的API,用于HTTP通信。
  • var json1 = { name: 'jack' }; var json2 = { age: 18}; var json3 = JSON.parse((JSON.stringify(json1) + JSON.stringify(json2)).replace(/}{/, ',')); console.log(json3...
  • 多个swagger文件合并为一个swagger文件,支持JSON / YAML 。 产品特点 将多个swagger文件合并为一个swagger文件。 $ ref-标签,包括一个单一级别的swagger文件。 $ ref#* -一个标记,包含多级swagger文件。 ...
  • <p><img alt="" height="886" src="https://img-ask.csdnimg.cn/upload/1615802262353.png" width="1546" /></p>
  • * 将两个jsonArray组合成为一个jsonArray,如果jsonObject key相同,则覆盖 * * @param oldFieldData 旧的数据 * @param newFieldData 修改之后的值 * @return */ public static JSONArray fieldDataCover...
  • JSONObject jsonThree = new JSONObject(); jsonThree.putAll(jsonOne); jsonThree.putAll(jsonTwo); System.out.println(jsonThree.toString());
  • JS封装两个json数据@前端 JS封装Json数据 记得在大学刚开始做项目时,总会有这样的功能需求,比如做一个动态显示,并显示相关动态的评论信息。而动态数据和动态评论数据分别位于不同的数据表中,后台只获能分别获取...
  • 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是种允许用户对自己的标记语言进 行定义的源语言。 XML使...
  • 用于拼接指定目录下所有的json文件 path后填写json文件目录 path_merges后填写拼接好的json文件存放目录 """ import os import json import time path = './' path_merges = './results_merges' file_list = os....
  • 前台将多个json对象传到后台解析

    千次阅读 2014-04-21 10:54:38
    前台json格式的数据如何传入后台 1. 将要传入后台的数据组装成JSON格式的字符串: var jsonStr = [{'name':'jim' , 'age':20} , {'name':'king' , 'age':26},{'name':'jge' , 'age':30}] 2. 使用JQuery的ajax...
  • javascript读取2个json数组,并且合并成一个数组,再排序,合并和排序怎么实现?
  • array_to_json ( ARRAY_AGG ( row_to_json (xxx) ) )查出数据就是以xxx明明的json字符串,在后台用 DBQueryParam param = new DBQueryParam(); param.setSelectFields(Lists.newArrayList("xxx","xxx"));
  • {\"adduserByMonth\":190,\"Total\":71896.50,\"BenYueAddrenshu\":3,\"BneYueTotal\":1417.00,\"BenYueJiangjin\":28.3400,\"Yingjiaosuijin\":2.... Response.Write(ToJson(result)); 转了啊 怎么回事呢
  • js将两个数组并为一个json对象

    千次阅读 2018-06-06 16:12:47
    //作为key的一个数组 var zz = $(".key"); var zzarray = []; zz.each(function(){ zzarray.push($(this).val()); }); //作为value的一个数组 var da = $(".val"...
  • 1.‘&’ 并行执行顺序,同时执行  "dev":"node test.js & webpack" 2.'&&'继发顺序,执行前面之后才可以执行后面   "dev":"node test.js && webpack" 转载于:...
  • $.ajax({ ... 'data': {'in_time': inTime... var json = eval('('+temp+')');  data=json.Person[0]; alert(json.Person[1]) }); php echo json_encode($rows1); echo ","; echo json_encode($rows2);  

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,566
精华内容 5,026
关键字:

多个json合成一个