import sys
import json
import cv2
import os
import shutil dataset = { "info": {
"description": "XXX in COCO dataset.",
"url": "",
"version": "1.0",
"year": ,
"contributor": "aimhabo",
"date_created": "2019-03-25"},
"images":[],
"annotations":[],
"categories": [
{"supercategory:": "person", "id": 1, "name": "person"},
{"supercategory:": "car", "id": 2, "name": "car"},
{"supercategory:": "truck", "id": 3, "name": "truck"},
{"supercategory:": "bus", "id": 4, "name": "bus"}
]
} datapath = "scripts/images"
annopath = "scripts/labels"
trainsetfile = "scripts/trainimage.list"
outputpath = "scripts"
phase = "XXXTrainCOCO"
classes = {"background": 0, "person": 1, "car": 2, "truck": 3, "bus": 4} with open(trainsetfile) as f:
count = 1
cnt = 0
annoid = 0
for line in f:
cnt += 1
line = line.strip() name,ext = os.path.basename(line).split('.') imagepath = os.path.join(datapath, name + ".jpg")
# no obstacle currently drop it
txtpath = os.path.join(annopath, name + ".txt")
if not os.path.exists(txtpath):
print txtpath
continue im = cv2.imread(imagepath) height, width, channels = im.shape if cnt % 1000 == 0:
print cnt dataset["images"].append({"license": 5, "file_name": line, "coco_url": "local", "height": height, "width": width, "flickr_url": "local", "id": cnt})
with open(txtpath) as annof:
annos = annof.readlines() for ii, anno in enumerate(annos):
parts = anno.strip().split(' ')
if len(parts) is not 5:
continue
class_id = int(parts[0])
x = float(parts[1])
y = float(parts[2])
w = float(parts[3])
h = float(parts[4])
if parts[0].find("group") == -1:
iscrowd = 0
else:
iscrowd = 1 annoid = annoid + 1 class_id += 1 # start from 1 instead of 0
x1 = int((x-w/2)*width)
y1 = int((y-h/2)*height)
wid = int(w*width)
hei = int(h*height) dataset["annotations"].append({
"segmentation": [],
"iscrowd": iscrowd,
"area": wid * hei,
"image_id": cnt,
"bbox": [x1, y1, wid, hei],
"category_id": class_id,
"id": annoid
})
count += 1 json_name = os.path.join(outputpath, "{}.json".format(phase)) with open(json_name, 'w') as f:
json.dump(dataset, f)

darknet标签转化为COCO标签的更多相关文章

  1. VOC标签转化为YOLO标签

    参考darknet自带的voc_label.py import xml.etree.ElementTree as ET import pickle import os from os import l ...

  2. 把 html标签转化为 html标签代码

    HttpUtility.HtmlEncode(table.Rows[0]["footnote"].ToString());

  3. JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门

    2 JSP内置标签(美化+业务逻辑)   1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容   2)JSP内 ...

  4. 初学HTML 常见的标签(三) 插入类标签

    第三篇博客, 这次说的是插入链接类标签, 我们平常在网页中经常能看到蓝色的链接类标签, 或者是一张图片, 一个电邮, 这些都是插入链接类的标签起的作用. <a></a>链接标签 ...

  5. JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  6. HTML学习笔记——块级标签、行级标签、图片标签

    1>块级标签.行级标签 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  7. WebApp 里Meta标签大全,webappmeta标签大全

    1.先说说mate标签里的viewport: viewport即可视区域,对于桌面浏览器而言,viewport指的就是除去所有工具栏.状态栏.滚动条等等之后用于看网页的区域.对于传统WEB页面来说,9 ...

  8. meta标签详解(meta标签的作用)///////////////////////////转

    meta标签详解(meta标签的作用) 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧   ...

  9. <script>标签应该放到</body>标签之前

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:贺师俊 链接:http://www.zhihu.com/question/20027966/answer/13727164 ...

随机推荐

  1. Codeforces 380E Sereja and Dividing

    题面 洛谷传送门 题解 博客 有精度要求所以只用求几十次就差不多了 CODE #include <bits/stdc++.h> using namespace std; typedef l ...

  2. docker学习(四)

    一.Docker数据管理 在容器中管理数据主要有两种方式:1.数据卷(Data volumes)2.数据卷容器(Data volume containers) 1.数据卷数据卷是一个可供一个或多个容器 ...

  3. 树莓派远程桌面--使用windows自带的远程桌面软件mstsc.exe

    步骤: 1.使用SSH登录树莓派 2.安装xrdp服务: sudo apt-get install xrdp 3.在Windows下打开命令框运行:mstsc 4.登录树莓派桌面 5.登录成功

  4. win32按钮

    1.按钮是什么 在win32窗口中,经常可以看到按钮,点击按钮可以触发各种事件:   创建按钮的函数: void CreateButton(HWND hwnd) //参数为父窗口句柄,按钮必须属于一个 ...

  5. vue报错 :NavigationDuplicated {_name: "NavigationDuplicated", name: "NavigationDuplicated"}

    解决的几种办法 https://blog.csdn.net/weixin_43202608/article/details/98884620 这个适合所有vue的UI框架 在main.js下添加一下代 ...

  6. 后缀数组 1031: [JSOI2007]字符加密Cipher

    /*1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4926 Solved: 2020[Submit ...

  7. 搭建自己的博客(九):使用shell模式批量添加博客文章并增加分页功能

    想做个博客分页功能,但是没有太多的文章.所以使用shell命令行创建多篇文章. 1.打开pycharm下的terminal终端 python manage.py shell # 打开python终端 ...

  8. 爬虫(十六):scrapy爬取知乎用户信息

    一:爬取思路 首先我们应该找到一个账号,这个账号被关注的人和关注的人都相对比较多的,就是下图中金字塔顶端的人,然后通过爬取这个账号的信息后,再爬取他关注的人和被关注的人的账号信息,然后爬取被关注人的账 ...

  9. 4、wordcount程序原理剖析及Spark架构原理

    一.wordcount程序原理深度剖析 二.Spark架构原理 1.

  10. Luogu5540 最小乘积生成树

    Luogu5540 最小乘积生成树 题目链接:洛谷 题目描述:对于一个\(n\)个点\(m\)条边的无向连通图,每条边有两个边权\(a_i,b_i\),求使\((\sum a_i)\times (\s ...