将csv文件转成txt方便yolo数据集训练

import pandas as pd
import os
#line={filename,width,height,class,xmin,ymin,xmax,ymax}
Airplane_class = ['E2','B52','Mirage2000','F4','F14','Tornado','J20','JAS39','B2']
def getx_c(width,xmin,xmax):
    x_c = (xmin+xmax)/2;
    x_c = '%.16f'%(x_c/width)
    return x_c
def gety_c(height,ymin,ymax):
    y_c = (ymin+ymax)/2
    y_c = '%.16f'%(y_c/height)
    return y_c

def getbbox_width(width,xmin,xmax):
    bbox_width = xmax - xmin
    bbox_width = '%.16f'%(bbox_width/width)
    return bbox_width

def getbbox_height(height,ymin,ymax):
    bbox_height = ymax - ymin
    bbox_height = '%.16f'%(bbox_height/height)
    return bbox_height


filename = os.listdir(r'F:/dataset/train_csv')
for file in filename:
    if file.endswith('.csv'):
        file_csv = 'F:/dataset/train_csv/'+file
        print(file_csv)
        file_txt = file[:file.index('.')]
        file_txt = 'F:/dataset/labels/'+file_txt +'.txt'
        with open(file_txt,'w') as f:
            data = pd.read_csv(file_csv)
            for line in data.values:
                #print(type(line[1]))
                x_c = getx_c(line[1],line[4],line[6])
                y_c = getx_c(line[2],line[5],line[7])
                bbox_width = getbbox_width(line[1],line[4],line[6])
                bbox_height = getbbox_height(line[2],line[5],line[7])
                Airplane_index = Airplane_class.index(line[3])
                #print(Airplane_class + ' ' + x_c + ' ' + y_c + ' ' + bbox_width + ' ' + bbox_height)
                f.write(str(Airplane_index) + ' ' + str(x_c) + ' ' + str(y_c) + ' ' +str(bbox_width) + ' ' + str(bbox_height))
                f.write('\n')

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值