You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu22.04下如何打开并转换CASIA手写库.gnt文件为.png

在Ubuntu 22.04中转换CASIA .gnt格式手写字符为.png格式

1. 安装必要依赖

首先确保系统安装Python3和图像处理库Pillow:

sudo apt update && sudo apt install python3 python3-pip -y
pip3 install pillow

2. 编写.gnt解析转换脚本

创建名为gnt2png.py的脚本,内容如下:

import os
import struct
from PIL import Image

def convert_gnt_to_png(gnt_dir, output_dir):
    # 创建输出根目录
    os.makedirs(output_dir, exist_ok=True)
    
    # 遍历目录下所有.gnt文件
    for gnt_file in os.listdir(gnt_dir):
        if not gnt_file.endswith('.gnt'):
            continue
        gnt_path = os.path.join(gnt_dir, gnt_file)
        
        with open(gnt_path, 'rb') as f:
            while True:
                # 读取字符块头部:4字节标签 + 2字节宽度 + 2字节高度
                header = f.read(8)
                if not header:
                    break  # 文件读取完毕
                
                # 解析头部二进制数据
                tag, width, height = struct.unpack('>H2H', header)
                # 将GB2312编码标签转为中文字符
                try:
                    char = struct.pack('>H', tag).decode('gb2312')
                except:
                    char = f'unknown_{tag}'
                
                # 创建字符对应的分类目录
                char_dir = os.path.join(output_dir, char)
                os.makedirs(char_dir, exist_ok=True)
                
                # 读取灰度像素数据
                pixel_data = f.read(width * height)
                # 转换为PIL图像对象
                img = Image.frombytes('L', (width, height), pixel_data)
                
                # 生成唯一文件名避免重复
                img_count = len(os.listdir(char_dir)) + 1
                img_path = os.path.join(char_dir, f'{gnt_file}_{img_count}.png')
                img.save(img_path)

if __name__ == '__main__':
    import sys
    if len(sys.argv) != 3:
        print("用法: python3 gnt2png.py <gnt文件目录> <输出png目录>")
        sys.exit(1)
    convert_gnt_to_png(sys.argv[1], sys.argv[2])

3. 运行脚本完成转换

假设你的.gnt文件存储在~/casia_gnt,要将.png输出到~/casia_png,执行命令:

python3 gnt2png.py ~/casia_gnt ~/casia_png

额外说明

  • 脚本会自动按字符分类创建子目录,同一字符的手写样本会集中存放,方便深度学习训练的数据管理。
  • 若遇到无法解码的字符标签,会生成unknown_<编码值>命名的目录,避免转换流程中断。

内容的提问来源于stack exchange,提问作者jisheng yin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:32:13