yolo数据集中 csv文件-- json文件--txt文件

 1、csv 转 json

参考:天池算法赛——广东电网智慧现场作业挑战赛 赛道三:识别高空作业及安全带佩戴_天池赛道三_小屋*的博客-CSDN博客

'''
官方给出的csv中的
{
 "meta":{},
 "id":"88eb919f-6f12-486d-9223-cd0c4b581dbf",
 "items":
[
     {"meta":{"rectStartPointerXY":[622,2728],"pointRatio":0.5,"geometry":[622,2728,745,3368],"type":"BBOX"},"id":"e520a291-bbf7-4032-92c6-dc84a1fc864e","properties":{"create_time":1620610883573,"accept_meta":{},"mark_by":"LABEL","is_system_map":false},"labels":{"鏍囩":"ground"}}
     {"meta":{"pointRatio":0.5,"geometry":[402.87,621.81,909,1472.01],"type":"BBOX"},"id":"2c097366-fbb3-4f9d-b5bb-286e70970eba","properties":{"create_time":1620610907831,"accept_meta":{},"mark_by":"LABEL","is_system_map":false},"labels":{"鏍囩":"safebelt"}}
     {"meta":{"rectStartPointerXY":[692,1063],"pointRatio":0.5,"geometry":[697.02,1063,1224,1761],"type":"BBOX"},"id":"8981c722-79e8-4ae8-a3a3-ae451300d625","properties":{"create_time":1620610943766,"accept_meta":{},"mark_by":"LABEL","is_system_map":false},"labels":{"鏍囩":"offground"}}
 ],
 "properties":{"seq":"1714"},"labels":{"invalid":"false"},"timestamp":1620644812068
 }
'''

import pandas as pd
import json
import os
from PIL import Image

df = pd.read_csv("an_rname.csv",header=None)
df_img_path = df[4]
df_img_mark = df[5]
# print(df_img_mark)
# 统计一下类别,并且重新生成原数据集标注文件,保存到json文件中
dict_class = {
    "badge": 0,
    "offground": 0,
    "ground": 0,
    "safebelt": 0
}
dict_lable = {
    "badge": 1,
    "offground": 2,
    "ground": 3,
    "safebelt": 4
}
data_dict_json = []
image_width, image_height = 0, 0
ids = 0
false = False  # 将其中false字段转化为布尔值False
true = True  # 将其中true字段转化为布尔值True
for img_id, one_img in enumerate(df_img_mark):
    # print('img_id',img_id)
    one_img = eval(one_img)["items"]
    # print('one_img',one_img)
    one_img_name = df_img_path[img_id]
    img = Image.open(os.path.join("./", one_img_name))
    # print(os.path.join("./", one_img_name))
    ids = ids + 1
    w, h = img.size
    image_width += w
    # print(image_width)
    image_height += h
    # print(one_img_name)
    i=1
    for one_mark in one_img:
        # print('%d      '%i,one_mark)

        one_label = one_mark["labels"]['标签']
        # print('%d      '%i,one_label)
        try:
            dict_class[str(one_label)] += 1
            # category = str(one_label)
            category = dict_lable[str(one_label)]
            bbox = one_mark["meta"]["geometry"]
        except:
            dict_class["badge"] += 1  # 标签为"监护袖章(红only)"表示类别"badge"
            # category = "badge"
            category = 1
            bbox = one_mark["meta"]["geometry"]
        i+=1

        one_dict = {}
        one_dict["name"] = str(one_img_name)
        one_dict["category"] = category
        one_dict["bbox"] = bbox
        data_dict_json.append(one_dict)
print(image_height / ids, image_width / ids)
print(dict_class)
print(len(data_dict_json))
print(data_dict_json[0])
with open("./data.json2", 'w') as fp:
    json.dump(data_dict_json, fp, indent=1, separators=(',', ': '))  # 缩进设置为1,元素之间用逗号隔开 , key和内容之间 用冒号隔开
    fp.close()

2、json 转 txt

将json文件yolov5可用的标签格式

json_to_txt.py 这里将所有的标签都减了一,可以不改,自己对的上就可以,当前标签:“badge”: 0,“offground”: 1,“ground”: 2,“safebelt”:3 bbox做了归一化(这个分数据集,有的数据集格式不一样,具体情况具体改)

可以读取images文件夹中的多

import json
import os
import cv2

file_name_list = {}

with open("./data.json2", 'r', encoding='utf-8') as fr:
    data_list = json.load(fr)

label = 0
[x1, y1, x2, y2] = [0, 0, 0, 0]

for data_dict in data_list:
    for k, v in data_dict.items():
        if k == "category":
            label = v
        if k == "bbox":
            [x1, y1, x2, y2] = v
        if k == "name":
            file_name, file_extension = os.path.splitext(v)
            file_name = file_name[9:]

    if not os.path.exists('./data1/'):
        os.mkdir('./data1/')

    image_path = os.path.join('./3_images/', file_name + file_extension)
    
    # Check if the file exists
    if not os.path.exists(image_path):
        print(f"Image not found: {image_path}")
        continue

    img = cv2.imread(image_path)

    if img is None:
        print(f"Failed to read image: {image_path}")
        continue
    
    size = img.shape  # (h, w, channel)
    dh = 1.0 / size[0]
    dw = 1.0 / size[1]
    x = (x1 + x2) / 2.0
    y = (y1 + y2) / 2.0
    w = x2 - x1
    h = y2 - y1
    x = x * dw
    w = w * dw
    y = y * dh
    h = h * dh

    content = f"{label-1} {x} {y} {w} {h}\n"

    with open(os.path.join('./data1/', file_name + '.txt'), 'a+', encoding='utf-8') as fw:
        fw.write(content)

种格式的图片

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: yolo-txt转coco-json工具是一种将YOLO格式的文本标注文件转换为COCO格式的JSON标注文件的工具。YOLO(You Only Look Once)是一种目标检测算法,而COCO(Common Objects in Context)是一个常见的目标检测和图像分割数据集。有时候我们从YOLO标注工具中获得的标注结果是文本文件的形式,而在使用COCO数据集进行训练和评估时,我们需要将标注结果转化为COCO格式的JSON文件。 这个工具可以实现这样的转换过程,首先读取YOLO格式的文本文件并解析每个物体的位置、类别和边界框信息。然后根据这些信息结构化生成COCO JSON文件,其中包含了每个物体的类别、标签和位置信息。这样转换之后,我们就可以直接使用COCO数据集上的目标检测算法进行训练或者评估。 使用yolo-txt转coco-json工具可以大大简化我们在YOLO和COCO之间进行标注格式转换的过程,省去了手动编写转换代码的复杂性和耗时。此外,将标注结果转换为COCO格式也使得我们能够更加方便地使用COCO数据集的相关工具和算法进行目标检测任务的处理。 总之,yolo-txt转coco-json工具是一个方便实用的工具,可以帮助我们轻松地将YOLO格式的文本标注文件转换为COCO格式的JSON标注文件,提高了目标检测任务的效率和准确性。 ### 回答2: yolo-txt转coco-json工具是一种用于将YOLO格式的标注文件转换为COCO格式的工具。YOLO(You Only Look Once)是一种目标检测算法,其标注文件是以txt格式存储的,而COCO(Common Objects in Context)是一种通用的目标检测数据集格式,其标注文件json格式存储。 使用yolo-txt转coco-json工具可以方便地将YOLO标注文件转换为COCO格式,以便于在COCO格式下进行目标检测任务或者使用COCO预训练模型进行迁移学习。 这个工具的主要功能是将YOLO标注文件中的目标边界框的位置信息、类别信息等提取出来,并按照COCO格式的要求,将这些信息整理为json格式的标注文件。 具体使用这个工具的步骤是:首先,将YOLO标注文件和对应的图片放置在同一个目录下;然后,运行工具提供的命令或脚本,指定输入目录和输出目录;最后,工具会自动遍历输入目录下的所有YOLO标注文件,将其转换为相应的COCO格式,并输出到指定的输出目录中。 通过使用yolo-txt转coco-json工具,可以减少手动地从YOLO格式转换为COCO格式的工作量,提高工作效率。同时,转换后的COCO格式标注文件可以更方便地与其他基于COCO格式的目标检测算法或工具进行兼容和集成,便于进一步的数据处理和模型训练。 ### 回答3: yolo-txt转coco-json工具是一种用于将YOLO格式的标注文件转换为COCO格式的标注文件的工具。YOLO格式的标注文件通常是一种纯文本文件,其中包含了每个目标物体的类别、位置和大小等信息。而COCO格式的标注文件是一种结构化的JSON文件,用于存储目标检测任务中的图像标注信息。 这个工具的主要功能是将YOLO格式的标注文件解析,并根据解析结果生成对应的COCO格式的标注文件。在转换过程中,它会将YOLO的坐标信息进行转换,以适应COCO标注的要求。同时,它还会将目标物体的类别信息转换为COCO数据集中所使用的类别编码。转换完成后,可以方便地使用生成的COCO格式的标注文件进行目标检测任务的训练和评估。 使用这个工具的好处是可以快速、准确地将YOLO格式的标注文件转换为COCO格式的标注文件,从而方便地在COCO数据集上进行目标检测任务。这对于需要使用COCO格式数据集训练模型的研究人员和开发者来说非常有帮助。 总之,yolo-txt转coco-json工具是一种方便的工具,用于将YOLO格式的标注文件转换为COCO格式的标注文件,使得目标检测任务的数据处理更加便捷高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值