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
相关产品推荐
相关产品推荐

