BG:crnn做文字识别,训练样本需将图片与该图片的标签放到一个目录下,为便于管理尽可能多的样本,且收集更多的样本,处理将所有图片标签写在一个标签文本下的情况,遂对样本进行整理、重新编号。
编号规则:
图片:10位数字+’.[‘jpg’, ‘png’, ‘jpeg’]’
标签:10位数字+’.txt’
1vs多crnn样本重新编号.py
import os
import shutil
# 获取当前目录
cwd = os.getcwd()
set_name = '/train2'
# 图片所在的文件夹路径
imgs_path = cwd + set_name + '/train'
# 标签路径
labels_path = cwd + set_name + '/train_labels.txt'
# 用来存储重新编码的数据集(图片+标签)
new_path = cwd + '/n_train2'
# 设置起始编号
count = 1
# 标签文件计数
count_txt = 1
# 图片格式
img_format = '.jpg'
# 按行遍历标签文本数据
for line in open(labels_path, encoding='utf-8'):
print('第 %s 行的内容:'% count_txt,line)
count_txt += 1
# 原图片名称
img_name = line.split('\t')[0]
# 原标签内容
label_text = line.split('\t')[1]
# 原图片路径
img_path = os.path.join(imgs_path, img_name)
# 新图片名、路径
new_img_name = '0' * (10 - len(str(count))) + str(count) + img_format
new_img_path = os.path.join(new_path, new_img_name)
# 新标签名、路径
new_label_name = '0' * (10 - len(str(count))) + str(count) + '.txt'
new_label_path = os.path.join(new_path, new_label_name)
# 剪切图片、创建独立的标签文本
try:
label_file = open(new_label_path, 'w', encoding='utf-8')
label_file.write(label_text)
label_file.close()
shutil.move(img_path, new_img_path)
count += 1
except Exception as e:
print(e)
# 统计
print('label文件中总计有 %d 条数据。'% (count_txt - 1))
print('总计 %d 条数据被成功重命名。' % (count - 1))