目标检测yolov5:json文件转TXT

输入:

输出;

相关代码:

import os
import json
class BDD_to_YOLOv5:
    def __init__(self):
        self.writepath = r"C:\Users\Wu\Desktop\cv test\\"

        #-----------------------------------------------------------#
        #self.writepath 保存最后生成的所有txt文件的地址 注意格式!!!r"C:\Users\Wu\Desktop\cv test\\"
        # -----------------------------------------------------------#


        self.bdd100k_width_ratio = 1.0/1920
        self.bdd100k_height_ratio = 1.0/1080
        self.select_categorys = ["pedestrian", "motor-vehicle", "non-motor-vehicle"]
        self.categorys_nums = {
            "pedestrian":0,
            "motor-vehicle":1,
            "non-motor-vehicle":2}
    def bdd_to_yolov5(self, path):
        lines = ""
        with open(path) as fp:
            j = json.load(fp)
            write = open(self.writepath + "%s.txt" % j["info"]["image_name"].split(".")[0], 'w')
            for fr in j["annotations"]:
                if fr["category_id"] in self.select_categorys:
                    temp_category = fr["category_id"]
                    idx = self.categorys_nums[temp_category]
                    cx = fr["bbox"][0] + fr["bbox"][2] / 2.0
                    cy = fr["bbox"][1] + fr["bbox"][3]/ 2.0
                    w = fr["bbox"][2]
                    h = fr["bbox"][3]
                    if w <= 0 or h <= 0:
                        continue
                    # 根据图片尺寸进行归一化
                    cx, cy, w, h = cx * self.bdd100k_width_ratio, cy * self.bdd100k_height_ratio, w * self.bdd100k_width_ratio, h * self.bdd100k_height_ratio
                    line = f"{idx} {cx:.6f} {cy:.6f} {w:.6f} {h:.6f}\n"
                    lines += line
            if len(lines) != 0:
                write.writelines(lines)
                write.close()
                print("%s has been dealt!")# % j["name"]


if __name__ == "__main__":

    #-----------------------------------------------------------#
    #bdd_labels_dir = r"C:\Users\Wu\Desktop\cv test\cv test\label"
    #给的label对应文件夹地址
    #-----------------------------------------------------------#


    bdd_labels_dir = r"C:\Users\Wu\Desktop\cv test\cv test\label"
    fileList = os.listdir(bdd_labels_dir)

    #-----------------------------------------------------------#
    #遍历label文件夹下的json文件
    #-----------------------------------------------------------#
    obj = BDD_to_YOLOv5()
    for path in fileList:
        filepath = os.path.join(bdd_labels_dir,path)
        print(path)
        obj.bdd_to_yolov5(filepath)

:注意事项:

JSONTXT 文件都是文本文件,用于存储数据。它们在数据结构和访问方面有着明显的区别。 ### JSON (JavaScript Object Notation) - **结构**: JSON 数据结构是键值对形式的序列化表示,支持的对象属性和数组元素是动态类型的,并且允许嵌套。 - **语法**: JSON 使用的是{}和[]作为容器,冒号(:)分隔键和值,英文逗号(,)分隔各个键值对。例如: ```json { "name": "John", "age": 30, "isStudent": false, "grades": [95, 88, 76] } ``` - **用途**: JSON 主要用于在 JavaScript、Python 等多种语言交换数据、保存配置等场景,因为它简洁并且易于人读写。 ### TXT (Text File) - **简单性**: TXT 文件仅仅是一个纯文本文件,所有内容都是以字符编码的形式存储,通常不包含复杂的结构。 - **存储**: TXT 文件可以是单行或多行,每行内容由换行符(如`\n`)分割。 - **用途**: TXT 文件主要用于存储简单的文本信息,比如日志记录、命令行输入输出等,它对于不需要复杂结构的数据处理非常方便。 ### 将 JSON 换成 TXTJSON 数据换成 TXT 的过程依赖于如何组织和呈现最终的文本文件。一种常见的方式是在 TXT 逐条列出 JSON 对象的键和对应的值: #### 示例步骤: 假设我们有以下 JSON 格式的数据: ```json { "key1": "value1", "key2": 42, "key3": true, "key4": ["item1", "item2", "item3"] } ``` **换结果** 可能是这样的 TXT 文件: ```text key1 value1 key2 42 key3 true key4 item1 key4 item2 key4 item3 ``` 或者以更自然的语言排列: ```text key1 is value1. key2 equals 42. key3 is True. key4 contains ['item1', 'item2', 'item3']. ``` ### 使用 YOLOv8 YOLOv8 是一种目标检测模型,属于深度学习范畴,广泛应用于计算机视觉领域。它基于 YOLO (You Only Look Once) 模型系列,旨在提供高性能的目标识别能力。 - **特性**: YOLOv8 提供了从模型训练到部署的一站式解决方案,包括图像分类、物体检测等功能。其设计强调速度与精度的平衡。 - **框架**: 它基于 PyTorch 构建,因此开发者能够利用 Python 进行模型的训练、调整和部署。 - **应用场景**: YOLOv8 适用于各种需要识别静态或动态图像的特定物体的应用场景,如自动驾驶、安防监控、工业质检等。 ### 总结 理解并使用 JSONTXT 文件涉及到数据的存储和检索方式的选择。选择合适的文件格式取决于数据结构的复杂性和应用需求。而 YOLOv8 则是一种针对目标检测任务的强大工具,通过深度学习技术实现了高效准确的目标识别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值