json 转 mot17数据格式的实现代码 (亲测有效)

代码使用说明

1970-2270文件夹是保存图像和json文件(也就是需要进行转换的文件)
det文件夹是保存单个json对应的txt(因为np.savetxt函数只能进行单个数组的保存)
det.txt文件是整合det文件夹所有txt文件(mot17数据集格式)

完整代码

from PIL import Image
import os
import glob
import numpy as np
import json

#读取图片,修改图片,另存图片
def convertjpg(jpgfile,outdir,img_sum=0):
  img=Image.open(jpgfile)#提取目录下所有图片
  try:
    img_sum=str('%08d'%img_sum)#图片保存成00000001格式
    img.save(os.path.join(outdir)+img_sum+'.jpg')#保存到另一目录
  except Exception as e:
    print(e)

#读取文件名
def file_name(file_dir):
  L=[]#保存文件名
  img_num=0#计算图片总数
  for root, dirs, files in os.walk(file_dir):
    img_num=img_num+len(files)
    one=os.path.basename(str(root))#获取路径最后的/或者\后的文件名
    L.append(one)
  num=len(L)-1 #获取路径下文件个数
  print('%s路径下有%d个文件'%(L[0],num))
  return L ,num ,img_num

def json2det(json_dir,out_dir,json_num):
  with open(json_dir,'r') as f:
    data_dict = json.load(f)
  '''5行5个目标,6列(类别索引、框左上角x坐标、框左上角y坐标、框的宽、框的高、目标置信度100)'''
  data=np.zeros([5,6])
  for i in range(len(data_dict["shapes"])):#遍历一个json中的所有目标
    points = np.array(data_dict["shapes"][i]["points"])
    xmin=min(points[:,0])
    ymin=min(points[:,1])
    xmax=max(points[:,0])
    ymax=max(points[:,1])

    data[i,0]=json_num
    data[i,1]=xmin
    data[i,2]=ymin
    data[i,3]=xmax-xmin
    data[i,4]=ymax-ymin
    data[i,5]=100
  print(data)

  a=np.linspace(-1,-1,len(data))
  data=np.insert(data,1,a,axis=1)#行矩阵插入
  a=a.reshape((len(a),1))
  data=np.concatenate((data,a,a,a),axis = 1)#补充-1
  print(data,'\n')
  np.savetxt(out_dir,data,fmt="%d,%d,%.3f,%.3f,%.3f,%.3f,%.3f,%d,%d,%d",delimiter="\n")

def main():
  i=0
  data_dir='E:/DL/CSDN-blog/json2mot17'
  for jsonfile in glob.glob(data_dir+'/1970-2270/'+'*.json'):
    i=i+1
    json2det(jsonfile,data_dir+'/det/'+str(i)+'.txt',i)
  print('det.txt生成完成')

  det=open(data_dir+'/det.txt','w')
  for txts in range(300):
    print(txts)
    one_det=open(data_dir+'/det/'+str(txts+1)+'.txt').read()
    det.write(one_det)

  det.close()

if __name__ == '__main__':
  main()

代码执行结果

到此这篇关于json 转 mot17数据格式 (亲测有效)的文章就介绍到这了,更多相关json 转 mot17数据格式 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)

    python3 json数据格式的转换(dumps/loads的使用.dict to str/str to dict.json字符串/字典的相互转换) Python3 JSON 数据解析 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数: json.dumps(): 对数据进行编码. json.loads(): 对数据进

  • json数据格式常见操作示例

    本文实例讲述了json数据格式常见操作.分享给大家供大家参考,具体如下: json数据格式 第一种,对象形式 <script> //var json3={name:"longzhoufeng",age:123}//第一种方式 var json3={"name":"longzhoufeng","age":123}//推荐这种方式,加引号,安全性高一点,转换格式好一些 for( var attr in json3){

  • Python JSON格式数据的提取和保存的实现

    环境:python-3.6.5 JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场景,比如网站前台与后台之间的数据交互. Python中自带了json模块,直接import json即可使用 官方文档:https://docs.python.org/3/library/json.html Json在线解析网站:https://www.json.cn/# j

  • python3实现从kafka获取数据,并解析为json格式,写入到mysql中

    项目需求:将kafka解析来的日志获取到数据库的变更记录,按照订单的级别和订单明细级别写入数据库,一条订单的所有信息包括各种维度信息均保存在一条json中,写入mysql5.7中. 配置信息: [Global] kafka_server=xxxxxxxxxxx:9092 kafka_topic=mes consumer_group=test100 passwd = tracking port = 3306 host = xxxxxxxxxx user = track schema = track

  • jQuery解析json格式数据示例

    本文实例讲述了jQuery解析json格式数据.分享给大家供大家参考,具体如下: var arr1 = [ "one", "two", "three", "four", "five" ]; $.each(arr1, function(){ alert(this); }); 输出: one   two  three  four   five var arr2 = [[1, 2, 3], [4, 5, 6],

  • Python 格式化打印json数据方法(展开状态)

    目的:Python 格式化打印json数据方法(展开状态) 环境: 系统:Win10 x64 环境: Pycharm Python 3.7.0 问题分析: Python下json手法的json在打印查看时,括号和数据都没有展开,查看起来比较困难. 解决方案: 使用json.dumps的separators设置,将数据展开格式化打印. 解决步骤: data = json.dumps(data, sort_keys=True, indent=4, separators=(', ', ': ')) 例

  • json 转 mot17数据格式的实现代码 (亲测有效)

    代码使用说明 1970-2270文件夹是保存图像和json文件(也就是需要进行转换的文件) det文件夹是保存单个json对应的txt(因为np.savetxt函数只能进行单个数组的保存) det.txt文件是整合det文件夹所有txt文件(mot17数据集格式) 完整代码 from PIL import Image import os import glob import numpy as np import json #读取图片,修改图片,另存图片 def convertjpg(jpgfil

  • vue3解决跨域问题详细代码亲测有效

    目录 vue3解决跨域问题详细代码亲测有效 关于解决vue3的跨域问题 项目场景: 原因分析: 解决方案: vue3解决跨域问题详细代码亲测有效 1.在vue.config.js中 放入以下代码: module.exports = { devServer: { proxy: { '/api': { target: 'http://api.tubecoin.org', //这里填入你要请求的接口的前缀 ws: true, //代理websocked changeOrigin: true, //虚拟

  • 设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)

    由于chrome,safari,opara 浏览器还未支持自动 "设为首页" & "加入收藏".  所以我们只能try, catch一下, 给个错误提示!  也算完美了. 另外ie中, 很多人也碰到过 它window.external.addFavorite.  时会报错的问题.  所以俺也只好抛出提示信息了. 加入收藏: 复制代码 代码如下: function addFavorite(){    if (document.all){        try{

  • Vue之beforeEach非登录不能访问的实现(代码亲测)

    后台的php请求就是接收这两个参数 login.vue <template> <div class=''> <input type="text" v-model="name" /> <input type="password" v-model="password" /> <button type="primary" @click="submit

  • 微信小程序使用websocket通讯的demo,含前后端代码,亲测可用

    0.概述websocket (1) 个人总结:后台设置了websocket地址,服务器开启后等待有人去连接它. 一个客户端一打开就去连接websocket地址,同时传递某些识别参数.这样一来后台和客户端连接成功了,然后后台就可以发消息给客户端了,(客户端也可以再回话给后台). (2) socket叫套接字,应用程序用socket向网络发出请求或者应答网络请求. (3) 官方解释的socket 建立连接四步骤: 服务器端开启socket,然后accep方法处于监听状态,等待客户端的连接. 客户端开

  • jQuery通过ajax请求php遍历json数组到table中的代码(推荐)

    html代码(test.html),js在html底部 具体代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test-jquery-ajax-list</title> </head> <body> <div class="main">

  • PHP判断json格式是否正确的实现代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <?php $GLOBALS['count'] = 0; //校验data或者content的json格式是否有错误 function data($value) { if (isset($value['data'])) { $value['data'] = json_decode($value['data'], true); } else if (isset($value['content'])) { $value['content'] =

  • Javabean转换成json字符并首字母大写代码实例

    这篇文章主要介绍了javabean转成json字符并首字母大写代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天写接口的时候有个需求将接口返回的json字符串首字母大写:{"SN":"","Result":""}格式, 只需要在返回bean里面属性上加上@JsonProperty注解就可以了 import com.fasterxml.jackson.annotati

  • vscode配置setting.json文件实现eslint自动格式代码

    一.ESlint+Vetur 实现ESlint代码规范 二.重点----旧版本(旧版本配置在setting.json 会出现警告) { "eslint.autoFixOnSave": true, "eslint.validate": [ "javascript", { "language": "vue", "autoFix": true }, { "language"

  • 以Json形式的数据格式实现JMeter参数化

    目录 1.使用"CSV数据文件设置"组件实现参数化 (1)测试计划中的元件 (2)数据文件内容 (3)线程组元件内容 (4)HTTP信息头管理器组件内容 (5)CSV数据文件设置组件内容 (6)HTTP请求组件内容 (7)脚本运行结果 2.使用"用户参数"组件实现参数化 (1)添加元件操作步骤 (2)元件中的内容介绍 参数化就是动态的获取并设置数据,当执行批量操作时,如批量插入或批量删除,之前每执行完一次就需要修改一次,效率太低,参数化可以代替人工获取并设置数据,安

随机推荐