目录

我用labelme标注完的json文件长这样:标注了两种:矩形框和点

我要转换的txt格式长这样:

json格式转txt如下:

从txt查看标注结果


参考的这位博主并在此基础上做了改动。(484条消息) LabelMe 标注的json转txt的格式转换教程_无损检测小白白的博客-CSDN博客

我用labelme标注完的json文件长这样:标注了两种:矩形框和点

我要转换的txt格式长这样:

分别代表你的目标类别序号(从0开始)、矩形框中心点x坐标归一化、矩形框中心点y坐标归一化、矩形框宽度w归一化、矩形框高度h归一化、点1的x坐标归一化、点1的y坐标归一化 ...点2 3 4 依次类推。。。

【点1,2,3,4依次是(左上,右上,右下,左下) ,矩形框坐标和关键点坐标都要归一化】

【归一化怎么实现??中心点x坐标/图片宽,y坐标/图片高,矩形框的宽/图片宽,高/图片高,关键点横/除以图片宽,关键点纵坐标/图片高----下面的转化代码中有体现建议不理解的仔细瞅瞅哦~】

json格式转txt如下:

# -*- coding: UTF-8 -*-
import json
import os
import cv2img_folder_path = 'datasets/500'  # 图片存放文件夹
folder_path = 'datasets/picbiaozhu'  # 标注数据的文件地址
txt_folder_path = 'datasets/txtresults'  # 转换后的txt标签文件存放的文件夹# 保存为相对坐标形式 :label x_center y_center w h
def relative_coordinate_txt(img_name, json_d, img_path):src_img = cv2.imread(img_path)# h, w = src_img.shape[:2]h, w, c = src_img.shapetxt_name = img_name.split(".")[0] + ".txt"txt_path = os.path.join(txt_folder_path, txt_name)print(txt_path)with open(txt_path, 'w') as f:for item in json_d["shapes"]:if item['shape_type'] == 'rectangle' and item['label'] == 'nameplate':point = item['points']x_center = (point[0][0] + point[1][0]) / 2y_center = (point[0][1] + point[1][1]) / 2width = point[1][0] - point[0][0]height = point[1][1] - point[0][1]# print(x_center)f.write(" {} ".format(0))f.write(" {} ".format(x_center / w))f.write(" {} ".format(y_center / h))f.write(" {} ".format(width / w))f.write(" {} ".format(height / h))continuekeypoint = item['points']x = keypoint[0][0]y = keypoint[0][1]f.write(" {} ".format(x / w))f.write(" {} ".format(y / h))f.write(" \n")print('finish!')for jsonfile in os.listdir(folder_path):# os.listdir用来返回指定文件夹包含的文件或文件夹的名字的列表temp_path = os.path.join(folder_path, jsonfile)print("json_path:\t",  temp_path)jsonfile_path = temp_pathwith open(jsonfile_path, "r", encoding='utf-8') as fff:json_d = json.load(fff, strict=False)img_name = json_d['imagePath'].split("\\")[-1].split(".")[0] + ".jpg"img_path = os.path.join(img_folder_path, img_name)print("img_path:\t", img_path)retname = img_name.replace(".jpg", ".txt")retpath = os.path.join(txt_folder_path, retname)if os.path.exists(retpath):continueelse:relative_coordinate_txt(img_name, json_d, img_path)

从txt查看标注结果

# -*- coding: UTF-8 -*-
import json
import os
import cv2
from cv2 import FONT_HERSHEY_SIMPLEXimg_folder_path = 'testimgandjson'  # 图片存放文件夹
folder_path = 'testimgandjson\img002.json'  # 存放标注数据的文件地址
txt_folder_path = "TXTfiles"  # 转换后的txt标签文件存放的文件夹# 相对坐标格式
def show_label_from_txt(img_path, txt_path):window_name = ('src')cv2.namedWindow(window_name, cv2.WINDOW_FREERATIO)src_img = cv2.imread(img_path)h, w = src_img.shape[:2]font = cv2.FONT_HERSHEY_SIMPLEXwith open(txt_path, "r", encoding='UTF-8') as f:line = f.readline()# 该函数返回的是字符串newline = line[1: ]data = newline.split('  ')# 返回值是字符串列表label = data[0]cx = float(data[1])cy = float(data[2])ww = float(data[3])hh = float(data[4])x1 = int(cx * w - 0.5 * ww * w)x2 = int(cx * w + 0.5 * ww * w)y1 = int(cy * h - 0.5 * hh * h)y2 = int(cy * h + 0.5 * hh * h)p1 = (x1, y1)p2 = (x2, y2)cv2.rectangle(src_img, p1, p2, (0, 255, 0), 5)# 图片,顶点1,顶点2,矩形颜色,组成矩形的线粗细若为负值如-1表示绘制一个填充矩形cv2.putText(src_img, label, p1, FONT_HERSHEY_SIMPLEX, 200, (255, 0, 0), 5)# 图片,要绘制的文本字符串,文本字符串左下角的坐标,字体类型,字体大小,文本颜色,线宽x00 = float(data[5])*wy00 = float(data[6])*hx01 = float(data[7])*wy01 = float(data[8])*hx11 = float(data[9])*wy11 = float(data[10])*hx10 = float(data[11])*wy10 = float(data[12])*hcoordinates = [[x00,y00],[x01,y01],[x11,y11],[x10,y10]]for coo in coordinates:cv2.circle(src_img,(int(coo[0]),int(coo[1])),25,(0,255,0),-5)#图像,圆心坐标,半径,圆边框颜色,正值表示线宽负值表示填充一个圆形cv2.imshow(window_name, src_img)cv2.waitKey(0)cv2.destroyAllWindows()returni = 0
for txtfile in os.listdir(txt_folder_path):txt_path = os.path.join(txt_folder_path, txtfile)# 一直报错utf-8,原因是我txt文件没有放对位置,地址没有写对,导致# for循环第一次循环没找到txt文件解码失败。i += 1if i > 15:break# 如果是一个子目录就继续if os.path.isdir(txt_path):continueprint("txt_path:\t", txt_path)img_name = txtfile.split("\\")[-1].split(".")[0] + ".jpg"img_path = os.path.join(img_folder_path, img_name)show_label_from_txt(img_path, txt_path)

用labelme标注矩形框和关键点得到的json文件转txt格式用于yolov5-face训练相关推荐

  1. 根据标注精灵助手标好并导出的json文件生成txt文件(一)

    最近在做自然场景的OCR检测识别算法,对于检测来说,需要对文件图片进行ground truth坐标点label的标注,刚开始使用的是标注精灵助手,标注好boundingbox后导出的是json格式的文 ...

  2. labelme标注文件转coco json,coco json转yolo txt格式,coco json转xml, labelme标注文件转分割,boxes转labelme json

    参考:https://github.com/wkentaro/labelme 一.labelme标注文件转coco json 1.标注时带图片ImageData信息,将一个文件夹下的照片和labelm ...

  3. labelme标注的json标签转txt格式

    在机器学习训练中常常会有不同格式的标签之间的转换,本次是将json标签格式转化成txt格式,在此记录一下. 1.labelme标注: 2.json文件: {"version": & ...

  4. vue在图片标注矩形框

    <template><div id="test" style="user-select: none;"><button @clic ...

  5. 「解析」labelme 的json文件批量转化

    相信大家在使用 labelme 标注数据之后,都需要将 json文件 转换为对应的标签图,但是每次一张一张转换,费时又费力,特别是转换后还需要再将 标签图修改名字,然后再移动到特定的文件夹,就又增添了 ...

  6. LabelMe标注的.json文件批量转Dataset,通过查询到多种代码无法在我电脑上正常工作,发现他们有共同的报错,于是修改后能正常工作。

    1.写在前面 最近用到标注好的数据训练神经网络,用labelme标注好之后生成.json文件,我要实现的功能是目标分割,需要把.json文件转为VOC格式的数据.但是.json文件太多,于是在网上找一 ...

  7. 使用labelme标注工具制作图像分割标签数据

    labelme是一款python编写的用于图像检测.分割等神经网络标签数据制作的软件,可以实现点选形成闭合的多边形轮廓,并(批量)生成png标签图像的额功能,能够基本满足一般图像分割网络的需求. 1 ...

  8. 【Pair使用笔记指南3】标注结果转储labelme读取的json文件

    pair根据选择标注标签的不同,会保存生成不同的标注文件.目前我发现的就是压缩包文件,里面包含着nii.gz文件,或者.json文件.对于某些标注工具的选择,保存的内容可能不同,但是据我发现,.jso ...

  9. labelme标注工具实现json标注数据批量转换

    我安装的是新版本(4.5.6)的labelme,根据源码进行了修改,实现json数据的批量转换,输出到指定目录. 以下是针对labelme新版本实现批量json_to_dataset实现方法: 一.找 ...

最新文章

  1. Nat. Biotechnol.扩增子测序革命—用16S及18S rRNA全长进行微生物多样性研究
  2. 轻量级的Ajax解决方案——DynAjax:直接在客户端调用C#类的方法
  3. 还有什么芯片没涨?ST、ON、Microchip、Xilinx、东芝开启新一轮涨价潮
  4. mysql order by 运算_在MySQL中具有ORDER BY的多个LIKE运算符?
  5. C++实现线段树求区间和-区间查询
  6. js引擎执行代码的基本流程
  7. java 标准输入流 关闭 打开_java--标准输入输出流
  8. 顶刊学者带你深度理解本地差分隐私【会议笔记】
  9. 安装其他插件svn消失
  10. 51单片机 74LS138译码器流水灯+Proteus仿真
  11. C# 中文简体中文繁体转换_ChineseConverter
  12. 代理服务器(Proxy)
  13. 读了7年通信最后还是转了码,这值得吗?
  14. 初学Linux时用到的一点复制,粘贴,删除,创建指令
  15. [渝粤教育] 西南科技大学 语文教材教法 在线考试复习资料2021版
  16. 微软AI 绘图工具+ChatGPT免费用,10秒轻松出图,超详细教程,纯干货分享
  17. Win10 正式版系统启动盘制作教程
  18. 如何批量添加阿里巴巴图标 iconfont
  19. Xtrabackup备份与恢复+异机远程流式备份
  20. ARCore之路-技术原理(二)

热门文章

  1. 吐血推荐一款相亲小程序
  2. luogu P3393 逃离僵尸岛
  3. PDM软件介绍(二)
  4. leaflet 绘制带箭头的线(虚线,实线)
  5. QT画直线 粗线和细线长短不一致
  6. 图片质量估计-如何判定一个人脸是否为阴阳脸(第一弹:python版本)
  7. 【图像处理】基于Zernike矩的亚像素边缘检测理论及MATLAB实现
  8. Office的格式刷是什么
  9. python零基础一
  10. 客户端通过librados远程连接ceph集群