根据ttf风格字体生成2W+中文字大全,白底黑字

2024-04-08 17:12

本文主要是介绍根据ttf风格字体生成2W+中文字大全,白底黑字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

字体示例1

字体示例2

字体示例3

生成的过程中,问题还是挺多的,比如文字不存在,就会生产出来全白色的图片,这需要删掉!

还有可能会生成非常小的,需要调节尺寸

整体目录格式如下:

fontStylePackage放入ttf格式文件,便可以自动读取进行字体生成。

train生成数据放的地方

ALLwords.txt 下面有获取方式

genTrainData.py 生成字体代码如下;

import string
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
import tqdmdef draw_text_with_font(font_path, text, image=None, write=False):# 设置图像大小和背景色iw, ih = 5, 5thre = 16image = np.ones((iw*thre, ih*thre, 3), np.uint8) * 255  # 将图像放大一倍# 加载TTF字体文件font = ImageFont.truetype(font_path, 72)  # 将字体大小调大# 创建PIL图像对象pil_image = Image.fromarray(image)draw = ImageDraw.Draw(pil_image)# 计算文本绘制位置text_width, text_height = draw.textsize(text, font)x = (image.shape[1] - text_width) // 2y = (image.shape[0] - text_height) // 2 # 绘制文本draw.text((x, y), text, font=font, fill='black')# 将PIL图像转换为OpenCV格式cv_image = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)# 将图像缩小回原始大小cv_image = cv2.resize(cv_image, (ih*thre, iw*thre))# 保存图像if write:# cv2.imwrite('seeStyle{}.png'.format(font_path.split('\\')[-1].split('.')[0]), cv_image)cv2.imshow('1', cv_image)cv2.waitKey(0)return cv_imagedef cuter_word(styleImage, ocr):result = ocr.ocr(styleImage)for line in result:for idx, word_info in enumerate(line):xbox = word_info[0]# 提取x和y坐标x_coords = [point[0] for point in xbox]y_coords = [point[1] for point in xbox]thre = 0x_min = max(int(min(x_coords)) - thre, 0)  y_min = max(int(min(y_coords) - thre), 0)x_max = int(max(x_coords))y_max = int(max(y_coords))styleImage = styleImage[y_min:y_max, x_min:x_max]return styleImagedef draw_font(idx, jdx,  font_path, text, write=False):cv_image = draw_text_with_font(font_path, text)# 保存图像# print(idx, jdx, text)fontPath = 'train/character{}'.format(idx)if not os.path.exists(fontPath):os.makedirs(fontPath)im = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY)if write and cv2.countNonZero(im)!=6400:cv2.imwrite(os.path.join(fontPath, jdx+'.png'), cv_image)return cv_imageif __name__ == '__main__':# 调用函数并传入TTF字体文件路径和文本信息import os # 逐行写入到Txt文件fontStyle = os.listdir("fontStylePackage")fonts = []with open('ALLwords.txt', 'r', encoding='utf-8') as file:for line in file.readlines():fonts.append(str(line).strip('\n'))print(fonts)for idx, fs in enumerate(fontStyle):font_path = os.path.join('fontStylePackage/', fs)print("第"+str(idx) + "种类的风格字体正在生成中。。。 ")for jdx, text in enumerate(tqdm.tqdm(fonts)):text = text[-1]draw_font(str(idx), str(jdx), font_path, text, write=True)

给出字体txt文件,里面包含了2W多个字体,简体字繁体字中文汉字大全,如果不存在的话可以根据以下函数除去生成的空白图片。

链接:https://pan.baidu.com/s/1sr-IQIHGfuFODNSaIDf2Bw 
提取码:87k3 
--来自百度网盘超级会员V4的分享

def delWithoutWord(image):cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)if cv2.countNonZero(im)==6400:return True 图片全白return False # 图片非全白

运行截图

这篇关于根据ttf风格字体生成2W+中文字大全,白底黑字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/886139

相关文章

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2