日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

批量生成印刷字体字库

發布時間:2024/1/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 批量生成印刷字体字库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主要目的
本文主要是為了做印刷體字體識別的前期工作做準備,后期需要大量字體樣本做神經網絡訓練,但缺乏印刷體樣本,因此特地寫了個程序自動生成所需要的樣本。

##主要實現過程

本文主要分為三個部分實現,主要包括文本字庫預處理,生成圖片字已及保存到相應文件夾。其中文本字庫采用的是百度上搜索到的《常用漢字3500個》,生成圖片用的是PIL模塊。
?

#文件目錄一 # -*- coding: utf-8 -*- #獲取字體文件名,字體文件可以在百度下載或者電腦字體目錄下尋找 import os def Word_Font():Word_Font_Path = 'D:\pycharm11\文字生成\Word_Font'dirs = os.listdir(Word_Font_Path)Word_Font_List=[]for dir in dirs:Word_Font_List.append(dir)return Word_Font_List#文件目錄二 import re f = open ("D:\pycharm11\文字生成\常用漢字3500個.txt","r") lines = f.readlines() # 讀取全部內容 ,并以列表方式返回 Library = [] for line in lines:line = line.split('\n')line = re.sub(r'\n', "", line[0])line = re.sub(':', "", line)line=line.replace(" ", "")line = line.lstrip(':')line = line[:0] + line[13:]for i in line:Library.append(i) size_L=len(Library)#主程序目錄 from PIL import Image, ImageDraw, ImageFont, ImageOps import os import re import Word_Font #讀取字體文件 Word_Font_List = Word_Font.Word_Font()#選擇字體以及圖片參數的初始值 class LetterImage():def __init__(self, imgSize=(0, 0), imgMode='RGB', bg_color=(0, 0,0), fg_color=(255, 255, 255),fontsize=10,Word_Font=Word_Font_List[1]):self.imgSize = imgSizeself.imgMode = imgModeself.fontsize = fontsizeself.bg_color = bg_colorself.fg_color = fg_colorself.font = ImageFont.truetype(Word_Font, fontsize)#設定生成圖片大小def GenLetterImage(self, letters):self.letters = letters(self.letterWidth, self.letterHeight) = self.font.getsize(letters)if self.imgSize == (0, 0):self.imgSize = (self.letterWidth - 0, self.letterHeight +15) #底邊邊距self.imgWidth, self.imgHeight = self.imgSizeself.img = Image.new(self.imgMode, self.imgSize, self.bg_color)self.drawBrush = ImageDraw.Draw(self.img)textY0 = (self.imgHeight - self.letterHeight-2 )textY0 = int(textY0)textX0 = int((self.imgWidth - self.letterWidth-2 )) #顯示窗口坐標self.drawBrush.text((textX0, textY0), self.letters, fill=self.fg_color, font=self.font)if __name__ == '__main__':f = open("D:\pycharm11\文字生成\常用漢字3500個.txt", "r")lines = f.readlines() # 讀取全部內容 ,并以列表方式返回Library = []for line in lines:line = line.split('\n')line = re.sub(r'\n', "", line[0])line = re.sub(':', "", line)line = line.replace(" ", "")line = line.lstrip(':')# line = line[:0] + line[13:]for i in line:Library.append(i)letterList = []#---------------將圖片參數追加到列表以便后期調用--------------------for j in range (0,len(Word_Font_List),1):letterList.append(LetterImage(bg_color=(0, 120, 0), fontsize=100,Word_Font=Word_Font_List[j]))print(Word_Font_List[j])num_letter = len(Library) #字體數量# ---------------------------創建文件夾------------------------------File_name = re.sub(r'\.', '_', Word_Font_List[j])paths = os.getcwd()[:-4] + '文字生成\\'+File_name # 獲取此py文件路徑,在此路徑選創建文件夾if not os.path.exists(paths):os.makedirs(paths)paths = paths +"\\"# -----------------在某一種字體下,對字庫遍歷,生成相應字體圖片------------------------for i in range(num_letter-1):letterList[j].GenLetterImage(Library[i])grayImg = ImageOps.grayscale(letterList[j].img)grayImg.save(paths+str(i)+".png")

流程圖:

總結:
本文在在字庫文本庫里中,處理得不干凈,主要有里面的冒號以及重復字處理,后期有待改進,另外程序中沒有寫入判斷機制,比如創建的文件夾是否存在,里面的文件是否要重新更新。

?

總結

以上是生活随笔為你收集整理的批量生成印刷字体字库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。