• 使用python脚本统一重命名训练图片文件名


      Yolo算法,在进行模型训练时,常常使用VOC数据格式。

      将图片文件复制到JPEGImages目录下,需要对文件名进行VOC标准格式编号重命名,如2020_000001.jpg,2020_000002.jpg,这样便于voc_label.py来进行后续处理。

      这个工作如果手工作业,是个体力活。因此使用python脚本来做,可以重复使用。

      python脚本如下,文件名为renamefiles.py。

     1 # -*- coding:utf-8 -*-
     2  3 # 读取指定目录,并将指定后缀的文件名重命名为yyyy_+6位数字编号的文件
     4  5 import sys,os,string
     6 import getopt
     7  8 opts, args = getopt.getopt(sys.argv[1:], "hi:p:", ["help","input=","postfix="])
     9 10 def usage():
    11     print(sys.argv[0] + ' -i inputdir -p postfix')
    12     print(sys.argv[0] + ' -h #get help info')
    13 14 def rename_files(filepath, postfix):
    15     #遍历filepath下所有文件,忽略子目录,将文件重命名
    16     #print(filepath)
    17     yyyy = '2020'
    18     print(postfix)
    19     newCounter = 1
    20     files = os.listdir(filepath)
    21     for fi in files:
    22         #将目录和文件或子目录合成一个全路径
    23         fi_d = os.path.join(filepath,fi)
    24         if os.path.isdir(fi_d):
    25             continue;
    26         else:
    27             #fs = os.path.join(filepath,fi_d)
    28             fs = fi_d
    29             #print(fi_d)
    30             #取得文件全路径
    31             
    32             lstpathext = os.path.splitext(fs)
    33             ext = lstpathext[1]
    34             if (ext == postfix):
    35                 #指定类型文件,
    36                 newFilename = str(newCounter).zfill(6)
    37                 #文件重命名
    38                 newFilename = yyyy + '_' + newFilename + postfix
    39                 newPath = os.path.join(filepath,newFilename)
    40                 os.rename(fs,newPath)
    41                 # 更新计数
    42                 newCounter = newCounter + 1
    43 44 45 rename_files(sys.argv[1],sys.argv[2])
    46 print('process finished!')
    47 sys.exit();

      该脚本使用两个参数,参数1为图片存储目录,参数2为图片文件的后缀,要包括“.“,如".jpg"。另外,yyyy在代码中写死了,为2020,如不同,可以自行修改。

      使用方法示例:

    python renamefiles.py E:workspacedarknetuilddarknetx64datavocVOCdevkitVOC2020JPEGImages .jpg

     

     

  • 相关阅读:
    Tomcat中的类是怎么被一步步加载的?
    Tomcat中的类是怎么被一步步加载的?
    Tomcat中的类是怎么被一步步加载的?
    redis- info调优入门-《每日五分钟搞定大数据》
    redis- info调优入门-《每日五分钟搞定大数据》
    redis- info调优入门-《每日五分钟搞定大数据》
    Lambda表达式详解
    2012年末工作中遇到的问题总结及感悟
    数据库表扩展字段设计思路
    数据库表扩展字段设计思路
  • 原文地址:https://www.cnblogs.com/alabo1999/p/13393850.html
Copyright © 2020-2023  润新知