数据处理的各种脚本


一、前言

就是记录一下,自己工作中用的数据处理的一些小脚本,如果对你有所帮助记得三连。


二、脚本

1.数据集的图片与标签匹配(显示缺少的图片和标签,也可以自动删除)

代码如下:

import os

# 自己图片存放目录
# path1 = "D:\data\images"
# 自己存放目录
# path2 = "D:\data\labels"
def file_name(image_dir, xml_dir):
    jpg_list = []
    xml_list = []
    for root, dirs, files in os.walk(image_dir):
        for file in files:
            jpg_list.append(os.path.splitext(file)[0])
    for root, dirs, files in os.walk(xml_dir):
        for file in files:
            xml_list.append(os.path.splitext(file)[0])

    diff = set(xml_list).difference(set(jpg_list))  # 差集,在a中但不在b中的元素
    print("缺少的标签数量:", len(diff))
    for name in diff:
        # 删除标签
        path = path2 + "/" + name + ".txt"
        print("已删除标签:", path)
        os.remove(path)
        print("no jpg", name + ".txt")
    diff2 = set(jpg_list).difference(set(xml_list))  # 差集,在b中但不在a中的元素
    print("缺少的图片数量:", len(diff2))
    for name in diff2:
        # 删除图片
        path = path1 + "/" + name + ".jpg"
        print("已删除图片:", path)
        os.remove(path)
        print("no xml", name + ".jpg")
if __name__ == '__main__':
    file_name(path1, path2)
    

效果在这里插入图片描述


2.YOLO数据集txt标签修改

我们在处理YOLO数据集的时候,后期想要修改或添加标签,可以使用,也可以处理只保存一类标签,把代码最后一行else去掉即可。

代码如下(示例):

import os
#想要修改改的标签
originNum = 7
#修改好的标签
reNumber = 6

txtfilepath = r"F:\newproject\script\Data_set_processing\labels" #原始txt文件所存文件夹,文件夹可以有一个或多个txt文件
savefilepath = r"F:\newproject\script\Data_set_processing\later" #更改后txt文件存放的文件夹
originFileList = os.listdir(txtfilepath) # 返回指定的文件夹包含的文件或文件夹的名字的列表

num = len(originFileList)
list = range(num) #创建从0到num的整数列表
files = os.listdir(savefilepath)
for i in list: #遍历每一个文件
    name = originFileList[i]#拿出文件名
    readfile = open(txtfilepath+"/"+name, 'r') #读取文件
    fline = readfile.readlines() #读取txt文件中每一行
    savetxt = open(savefilepath+"/"+name,'a+')
    textList=[]
    for j in fline:#每一行循环
        textList=j.split(" ",1) #分割第一个字符和后面的字符
        firstStr=textList[0]
        if firstStr.isdigit and int(firstStr)==originNum:
            retext=str(reNumber)+' '+textList[1] 
            print(name+":"+retext)
            savetxt.write(retext)
        else:
            retext = str(firstStr) + ' ' + textList[1]
            savetxt.write(retext)
       

效果
处理前
处理前
处理后
在这里插入图片描述


三、结语:

第一次发表博客没什么经验,如有问题请大家及时指出,后期也会更新的,感谢!

欢迎交流!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好学的小赵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值