yolov5输出检测框的中心位置,框的长宽,框的位置,以及输出对应标签格式的输出

这篇博客介绍了如何修改YOLOv5的detect.py文件,以输出检测框的中心位置、长宽和标签信息。作者通过计算xyxy坐标来获取中心点,并按比例转换以匹配labelimg标注工具的格式。只保存了特定类别的信息,例如'person',并将这些信息保存到同名txt文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

yolov5输出检测框的中心位置,框的长宽,框的位置,以及输出对应标签格式的输出。 模型读取每个图片,并将上述的信息依此输出到同名的txt文件中保存,具体需要哪些坐标可以自己选。

更改信息在detect.py文件中,需要更改的第一个地方在如下地方,输出位置在runs/detect/exp中
在这里插入图片描述

            # 自己改的部分
            location_center_dir = str(save_dir) + '/detect_location'
            if not os.path.exists(location_center_dir):
                os.makedirs(location_center_dir)
            location_center_path = location_center_dir + '\\' + str(p.stem) + (
                '' if dataset.mode == 'image' else f'_{frame}')  #
            flocation = open(location_center_path + '.txt', 'a')

第二个需要更改的地方:
在这里插入图片描述


                    # 自己改的部分
                    x0 = (int(xyxy[0].item()) + int(xyxy[2].item())) / 2
                    y0 = (int(xyxy[1].item()) + int(xyxy[3].item())) / 2  # 中心点坐标(x0, y0)

                    chang = int(xyxy[2].item()) - int(xyxy[0].item())
                    kuan = int(xyxy[3].item()) - int(xyxy[1].item())
                    # class_index = cls  # 获取属性
                    # object_name = names[int(cls)]  # 获取标签名如:person
                    label = int(cls)  # 对应每个物体的标签对应的数字label,如person:0
                    x0 = format(x0/2448, '.6f')  #此处我要保存和训练标注的txt一样的格式,故保留六位小数
                    y0 = format(y0/2048, '.6f')
                    chang = format(chang/2448, '.6f') # 2448和2048为我的图片长和宽
                    kuan = format(kuan/2048, '.6f')
                    if label==0:  # 在这里我只需要保存person的信息,可以删去,也可以自己更改
                        flocation.write(str(label) + ' ' + str(x0) + ' ' + str(y0) + ' '+str(chang)+' ' +str(kuan)+'\n')

注释应该很清楚了,int(xyxy[0].item()) 为左边的X坐标,int(xyxy[0].item(2))为右边的x坐标,int(xyxy[1].item()) 为上面的y坐标,int(xyxy[3].item()) 为下面的y坐标。

我的坐标信息除以2048和2448,是为了获得labelimg标注工具同类型的坐标信息(用于训练或者var的label标签),即比例。需要用可通过img.shape()获得。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值