最近在学习pytorch,在做一个手写体汉字识别的demo,用到的数据集时HWDB1.1tst_gnt和HWDB1.1trn_gnt。原始数据集经过解压后,将.gnt转化为.png文件,在转化过程中发现断断续续会有一些图片丢失,不知道问题出现在哪里?
附上转化代码
# coding=utf-8
import struct
import os
from PIL import Image
DATA_PATH = "D:/Dataset/HWDB/HWDB1.1tst_gnt/HWDB1.1trn_gnt" # gnt数据文件路径
IMG_PATH = "../data/test" # 解析后的图片存放路径
# print("start")
files = os.listdir(DATA_PATH)
num = 0
for file in files:
tag = []
img_bytes = []
img_wid = []
img_hei = []
f = open(DATA_PATH + "/" + file, "rb")
while f.read(4):
tag_code = f.read(2)
tag.append(tag_code)
width = struct.unpack('<h', bytes(f.read(2)))
height = struct.unpack('<h', bytes(f.read(2)))
img_hei.append(height[0])
img_wid.append(width[0])
data = f.read(width[0] * height[0])
img_bytes.append(data)
f.close()
for k in range(0, len(tag)):
im = Image.frombytes('L', (img_wid[k], img_hei[k]), img_bytes[k])
if os.path.exists(IMG_PATH + "/" + tag[k].decode('gbk')):
im.save(IMG_PATH + "/" + tag[k].decode('gbk') + "/" + str(num) + ".png")
else:
os.mkdir(IMG_PATH + "/" + tag[k].decode('gbk'))
im.save(IMG_PATH + "/" + tag[k].decode('gbk') + "/" + str(num) + ".png")
num = num + 1
print(tag.__len__())
print("successful!")
# files = os.listdir(IMG_PATH)
# n = 0
# f = open("label.txt", "w") # 创建用于训练的标签文件
# for file in files:
# files_d = os.listdir(IMG_PATH + "/" + file)
# for file1 in files_d:
# f.write(file + "/" + file1 + " " + str(n) + "\n")
# n = n + 1
这是转化测试集的代码,测试集图片的总数量应该是60*3375=202500,但经过脚本统计发现总数为223716,部分缺失记录如下图:
这个问题出现在哪里?请问该如何解决?