3.1数据标注

本文档详细介绍了如何将WOFF字体文件转换为图像并进行标注,适用于计算机视觉和深度学习的数据集创建。内容涵盖使用Python的fontTools和reportlab库将字符转为图像,通过labelme手动标注,以及调用百度云API进行自动标注。教程还提供了Postman测试API的步骤,以及Python车牌识别和自动标注的代码解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.1.1将WOFF字体文件转换为图像并标注

项目背景

本次操作的目的是为了生成训练数据集,用于训练机器学习模型,使得模型能够自动识别WOFF文件中加密的数字。这是一个非常实用的应用,因为现在很多网站为了防止数据被爬取,会把重要的数字信息(如价格、电话号码等)保存为WOFF文件中的字体。

要完成这样一个目的:首先,我们需要从WOFF文件中提取出每个加密数字的字体轮廓,并将其转换为图像;然后,这些图像会被保存为PNG文件,文件名是每个图像对应的真实数字(这个信息通常可以从WOFF文件的字符映射中获取)。这样,我们就得到了一个大量的、带有标签的图像数据集,可以直接用来训练机器学习模型。

课程目标

在本课程中,你将学习如何使用Python的`fontTools`和`reportlab`库来将WOFF字体文件中的字符转换为图像文件并标注数字。

课程内容

1. 导入必要的模块

首先,我们需要从`fontTools.ttLib`模块中导入`TTFont`类,它可以用来读取和操作TrueType和OpenType字体文件。

from fontTools.ttLib import TTFont

然后,我们从`reportlab.graphics`模块中导入`renderPM`模块,它可以将基于矢量的图形转换为基于像素的图形。

from reportlab.graphics import renderPM

接着,我们从`reportlab.graphics.shapes`模块中导入`Drawing`类,它可以用来创建和操作基于矢量的图形。

from reportlab.graphics.shapes import Drawing

 2. 定义转换函数

#我们定义一个名为woff_to_img的函数,这个函数接受一个参数:WOFF文件的路径。
def woff_to_img(woff_path):
#我们创建一个`TTFont`对象,这个对象表示从给定路径加载的字体。
    font = TTFont(woff_path)
#我们调用`getBestCmap`方法获取最适合的字符映射,这个映射是一个字典,其中的键是字符的Unicode编码,值是字符的名称。
    cmap = font.getBestCmap()  
#我们创建一个列表,这个列表包含了字体的一部分字符名称,只选择了名称中包含'uni'的字符。
    orders = [i for i in font['glyf'].glyphOrder[1:12] if ('uni' in i)]  
#我们创建一个新的映射,这个映射只包含在字符名称列表中的字符。
    glyphOrder = {cmap[i]: i for i in cmap if cmap[i] in orders}  
#我们创建一个列表,这个列表包含了所有字符对象。
    glyphs = [font.getGlyphSet()[order] for order in glyphOrder]  

3. 渲染字符为图像并保存

最后,我们将每个字符渲染为图像,并保存为.png文件。

    for (order, glyph) in zip(glyphOrder, glyphs): 
      # 开始一个循环,遍历 glyphOrder(字体顺序)和 glyphs(字体对象)两个列表中的元素。每次循环,都会取出一个字体顺序和一个字体对象。
        pen = ReportLabPen(font.getGlyphSet())  
      # 创建一个 ReportLabPen 对象,该对象可以用来绘制字体轮廓。参数 font.getGlyphSet() 是从字体对象中获取字体集。
        glyph.draw(pen) 
      #调用 draw 方法,将当前的字体轮廓(glyph)绘制到 pen 对象上。
        draw = Drawing(glyph.width, glyph.width * 1.6)
      # 创建一个 Drawing 对象,其宽度和高度分别是字体轮廓的宽度和宽度的1.6倍。
        draw.add(pen.path) 
      # 调用 draw 方法,将当前的字体轮廓(glyph)绘制到 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

garyyu2200

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值