Yolo算法,在进行模型训练时,常常使用VOC数据格式。
将图片文件复制到JPEGImages目录下,需要对文件名进行VOC标准格式编号重命名,如2020_000001.jpg,2020_000002.jpg,这样便于voc_label.py来进行后续处理。
python脚本如下,文件名为renamefiles.py。
```python
# -*- coding:utf-8 -*-
# 读取指定目录,并将指定后缀的文件名重命名为yyyy_+6位数字编号的文件
import sys,os,string
import getopt
opts, args = getopt.getopt(sys.argv[1:], "hi:p:", ["help","input=","postfix="])
def usage():
print(sys.argv[0] + ' -i inputdir -p postfix')
print(sys.argv[0] + ' -h #get help info')
def rename_files(filepath, postfix):
#遍历filepath下所有文件,忽略子目录,将文件重命名
#print(filepath)
yyyy = '2020'
print(postfix)
newCounter = 1
files = os.listdir(filepath)
for fi in files:
#将目录和文件或子目录合成一个全路径
fi_d = os.path.join(filepath,fi)
if os.path.isdir(fi_d):
continue;
else:
#fs = os.path.join(filepath,fi_d)
fs = fi_d
#print(fi_d)
#取得文件全路径
lstpathext = os.path.splitext(fs)
ext = lstpathext[1]
if (ext == postfix):
#指定类型文件,
newFilename = str(newCounter).zfill(6)
#文件重命名
newFilename = yyyy + '_' + newFilename + postfix
newPath = os.path.join(filepath,newFilename)
os.rename(fs,newPath)
# 更新计数
newCounter = newCounter + 1
rename_files(sys.argv[1],sys.argv[2])
print('process finished!')
sys.exit();
```
该脚本使用两个参数,参数1为图片存储目录,参数2为图片文件的后缀,要包括“.“,如".jpg"。另外,yyyy在代码中写死了,为2020,如不同,可以自行修改。
使用方法示例:
python renamefiles.py E:\workspace\darknet\build\darknet\x64\data\voc\VOCdevkit\VOC2020\JPEGImages .jpg