美文网首页
CASIA-HWDB脱机手写汉字数据集以及申请表下载

CASIA-HWDB脱机手写汉字数据集以及申请表下载

作者: nonoka | 来源:发表于2019-02-11 19:10 被阅读0次

            中科院好像把这个数据集从官网上撤掉了?我真的找遍全网,总算是找到了这个数据集,现在分享给大家。共六个文件,分别是CASIA-HWDB1.0训练集和测试集、CASIA-HWDB1.1训练集和测试集、CASIA-Competition数据集还有一张申请表。不过我看大多数人都是把前四个文件合并起来当做训练集,用Competition那个做测试集的。【注:2019年春节期间数据集的官网打不开,现在已经可以正常访问了】

    下载链接:https://pan.baidu.com/s/1jyeo97h_PhWsFS4ngakwbw

            还缺一个CASIA-HWDB1.2的数据集,是与之前的数据集类别不重合的,我没找到,要是谁有这个数据就在下边评论吧,谢谢!

            顺便一提,CASIA-HWDB的官网可以用网页快照打开,猜一下原始的下载链接,挂在迅雷会员里是可以下载的,不过我发现下载界面是真的只有1.0和1.1,并没有提供1.2的下载,好奇怪呀......可能只能申请吧。
    地址:http://web.archive.org/web/20180621154922/http://www.nlpr.ia.ac.cn/databases/handwriting/Download.html

            我还写了个Reader类,可以方便地读取gnt文件,并转换为image-label对,欢迎使用。

    import struct
    from codecs import decode
    from scipy.misc import toimage
    import numpy as np
    import PIL.ImageOps
    
    
    class Reader:
        def load_gnt_file(self, filename):
            """
            Load characters and images from a given GNT file.
            :param filename: The file path to load.
            :return: (image: Pillow.Image.Image, character) tuples
            """
            with open(filename, "rb") as f:
                while True:
                    packed_length = f.read(4)
                    if packed_length == b'':
                        break
                    length = struct.unpack("<I", packed_length)[0]
                    raw_label = struct.unpack(">cc", f.read(2))
                    width = struct.unpack("<H", f.read(2))[0]
                    height = struct.unpack("<H", f.read(2))[0]
                    photo_bytes = struct.unpack("{}B".format(height * width), f.read(height * width))
                    label = decode(raw_label[0] + raw_label[1], encoding="gb2312")
                    image = toimage(np.array(photo_bytes).reshape(height, width))
    
                    yield image, label
    
        def read_gnt_image(self, path):
            data = self.load_gnt_file(path)
            data_list = []
            while True:
                try:
                    image, label = next(data)
                    image = image.resize((32, 32))  # 图像缩放,根据自己的需求修改
                    image = PIL.ImageOps.invert(image)  # 图像反色,根据自己的需求修改
                    data_list.append((image, label))
                except StopIteration:
                    break
            return data_list
    

            大概这样使用

    import os
    reader = Reader()
    dirs = ['database/HWDB1.1/', 'database/HWDB1.0/']  # 改成你的目录
    data_list = []
    
    for dir_path in dirs:
        files = os.listdir(dir_path)
        length = len(files)
        for index, file in enumerate(files):
            file_path = dir_path + file
            data_list.extend(reader.read_gnt_image(file_path))
            sys.stdout.write('\r>> Dealing gnt file %d/%d' % (index, length))
            sys.stdout.flush()
    sys.stdout.write('\n')
    print(len(data_list))
    

    相关文章

      网友评论

          本文标题:CASIA-HWDB脱机手写汉字数据集以及申请表下载

          本文链接:https://www.haomeiwen.com/subject/mffceqtx.html