【问题标题】:How might I detect serif and sans-serif fonts in Python/OpenCV?如何在 Python/OpenCV 中检测 serif 和 sans-serif 字体?
【发布时间】:2020-11-21 22:52:23
【问题描述】:

我想创建一个 Python 程序,它打印我计算机上安装的字体的名称,并打印每种字体是 serif 字体还是 sans-serif 字体(我不想手动输入字体是否是衬线与否)。我已经让我的程序打印计算机上安装的字体名称列表,但我不知道如何制作一个程序来检测字体是衬线字体还是无衬线字体。

现在我正在考虑使用给定字体中的字母创建图像并将其与 Times New Roman 中的字母进行比较(因为 Times New Roman 是一种相当标准的衬线字体),这就是为什么我正在考虑使用开放式简历。或者,我可能会编写一个程序来查找每个字母中的角度/曲线以识别衬线的位置,这可能会更好,但可能还需要为每个字母编写不同的程序。

但是,这些只是想法,我不知道如何实际实施。有人对我可以研究的包或模块有什么建议吗?

为清晰起见进行了编辑,希望这更容易理解

【问题讨论】:

  • 您如何定义衬线字体和无衬线字体之间的区别?
  • @Scott Hunter 我会说当角色的末端有突起时。如果我的程序中有任何不确定性,我可能会选择无衬线而不是衬线。在这种情况下,手写字体和草书字体也最终会进入无衬线垃圾箱。
  • 我也在考虑将每种字体与 Times New Roman 进行比较,看看图像是否大致排列,或者对字符的突起进行逐个字母的分析(例如,对于字符A,在任何一条腿上寻找衬线,然后在 B,在左上角和左下角寻找衬线)。
  • 这让我很困惑,您是要检测图像中的字体还是网站中的字体?你已经定义了你想做 python 但不是从你获取数据的地方......
  • @Ruli 不,我没有检测到图像中的字体或网站中的字体。我只是想编写 python 代码来获取您计算机上的字体并告诉您字体是 serif 还是 sans-serif。

标签: python opencv


【解决方案1】:

想出了如何做一个相当可靠的版本!

我选取了所有我想分析的衬线/无衬线字体,并将每种字体中的字母“N”打印到空白 png 上。然后我在图像上运行 OpenCV 的 Hough Transform 函数来识别 N 的左侧,并在 N 的左侧顶部创建一条线。如果这条线的左侧有额外的位(衬线),那么我说字体是衬线字体。否则,我说字体是无衬线字体。

有点粗略但出乎意料的有效!唯一遇到问题的字体是奇怪的 Wingding 和非常风格化的字体。

【讨论】:

    猜你喜欢
    • 2012-11-14
    • 2011-02-09
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    相关资源
    最近更新 更多