json 转 mot17数据格式的实现代码 (亲测有效)
作者:G果 发布时间:2022-03-06 09:23:53
标签: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()
代码执行结果
来源:https://blog.csdn.net/weixin_42899627/article/details/114851196


猜你喜欢
- '创建DOM对象set objDom=server.CreateObject("MicroSoft.XMLDom"
- 1.isinstance函数:除了以一个类型作为参数,还可以以一个类型元组作为参数。isinstance(obj,basestring)==
- 什么是 BokehBokeh 是 Python 中的交互式可视化库。Bokeh提供的最佳功能是针对现代 Web 浏览器进行演示的高度交互式图
- 视频加密流程图:后端获取保利威的视频播放授权token,提供接口api给前端参考文档:http://dev.polyv.net/2019/v
- 在我们学习和使用JavaScript的中,会经常使用到数组的去重,接下来的内容,来给大家分享一下,我们在开发过程中,常用到的数组去重方法,这
- 序言:刚结束公司的三个月试用期,意味着我即将正式步入社会成为广大从事IT行业的一员。作为一个编程小白,无论从技术层面还是知识层面都是比较薄弱
- 1. 资料1) Protobuf 开发文档https://protobuf.dev/2) protobuf安装指南https://grpc.
- 本方法只做学习研究之用,不得用于商业用途若经济条件允许,请支持并购买正版,链接地址:https://www.jetbrains.com/py
- 如IP为192.168.1.111现要截取第二个.之前的值,得到结果192.168,很多网站都只显示前面2个值 &nb
- 采用二值判断如果确认是噪声,用该点上面一个灰度进行替换。噪声点处理:对原点周围的八个点进行扫描,比较。当该点像素值与周围8个点的值小于N时,
- 本文实例为大家分享了Python函数实现学员管理系统的具体代码,供大家参考,具体内容如下这个是一个简单的管理程序输入姓名,年龄,性别(也可以
- 本文实例为大家分享了python自动发送邮件的具体代码,供大家参考,具体内容如下#coding=utf8 ''&
- 如果您正尝试去处理元类,或者正受困于 Twisted 中的异步编程,或者正在研究由于使用了多分派而使您精疲力尽的面向对象编程,那么您完全错了
- web开发中避免不了运行环境的搭建,个人认为这是没有什么技术含量而又浪费时间的工作.所以将环境搭建的步骤记录下来,希望可以帮到有需要的朋友少
- NextGEN Gallery是Wordpress中著名的相册插件,遗憾的是不支持中文等unicode字符,本文将介绍如何将目录转换为拼音(
- 本文为大家分享了Python实现批量压缩图片的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*- "
- 现在vue.js几乎是程序员必会的前端框架啦~今天就学习记录一下怎么运行一个vue项目无论是Idea还是webstorm,都是一样的操作。去
- 简介scrapy-redis是一个基于redis的scrapy组件,用于快速实现scrapy项目的分布式部署和数据爬取,其运行原理如下图所示
- 关联规则挖掘(Association rule mining)是数据挖掘中最活跃的研究方法之一,可以用来发现事情之间的联系,最早是为了发现超
- 工作中我们经常要两段代码的区别,或者需要查看接口返回的字段与预期是否一致,如何快速定位出两者的差异?除了一些对比的工具比如Beyond Co