国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python3生成手寫體數字方法

2020-02-22 23:03:23
字體:
來源:轉載
供稿:網友

0.引言

  平時上網干啥的基本上都會接觸驗證碼,或者在機器學習學習過程中,大家或許會接觸過手寫體識別/驗證碼識別之類問題,會用到手寫體的數據集;

  自己嘗試寫了一個生成手寫體圖片的python程序,在此分享下生成單張 30*30像素的手寫體數字1-9圖像 的一種實現方法;

  我是利用random生成隨機數1-9,然后PIL寫到圖像上,然后經過旋轉、扭曲處理,得到“手寫體”,這里沒有加干擾線和干擾點;

  得到的手寫體數字圖像如圖1所示;

  實現比較簡單,用了PIL庫,不需要額外安裝opencv啥的,有興趣可以自己試試。

圖1 生成的手寫體數字1-9

  圖2 利用generate_pngs.py寫入到文件夾3的數字3圖像

  如果你想生成手寫體的字母/漢字也可以:

  圖3 利用generate_single_png.py生成漢字的手寫體

源碼上傳到了我的GitHub: https://github.com/coneypo/Generate_handwritten_number

1.設計流程

圖4 整體設計流程

圖5 生成的圖像經過的處理

1.1 新建一個空白圖像img_50,尺寸大小為50*50 

img_50_blank = Image.new('RGB', (50, 50), (255, 255, 255))

為什么我這里要先生成50*50的空白圖像?

    因為圖像背景(50*50像素的畫布)初始化的時候設置為白色(顏色數組(255, 255, 255)),而背景色之外的其實是黑色;

  之后需要進行旋轉處理,如果直接新建30*30像素的畫布,旋轉之后邊上會出現黑邊,如圖6所示;

  所以我新建了一個50*50,然后旋轉之后從中間裁出來一個30*30的圖像出來;

圖6 直接用30*30像素的畫布寫字旋轉(會出現黑邊)

1.2 利用PIL在圖像上寫文字

  利用PIL的ImageDraw,創建畫筆,然后利用draw.text在指定位置寫字;

  xy=(18,11)是從圖像左上角開始的坐標,取值自己根據需求調整;

# 創建畫筆 draw = ImageDraw.Draw(img_50_blank)# 生成隨機數1-9num = str(random.randint(1, 9))# 設置字體,這里選取字體大小25font = ImageFont.truetype('simsun.ttc', 20)# xy是左上角開始的位置坐標draw.text(xy=(18, 11), font=font, text=num, fill=(0, 0, 0))

1.3 將圖像隨機旋轉一定角度

  利用 rotate(angel) 進行旋轉圖像,angel取的是度數,這里讓它隨機旋轉-10到+10度:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹阳市| 儋州市| 保定市| 葫芦岛市| 大厂| 金坛市| 东海县| 衢州市| 荔波县| 都安| 桂东县| 隆子县| 台东县| 南开区| 江西省| 阿拉善盟| 河西区| 伊川县| 满城县| 双柏县| 阿勒泰市| 大方县| 读书| 木兰县| 阿合奇县| 黑山县| 温州市| 宜良县| 阳新县| 大宁县| 阿鲁科尔沁旗| 三明市| 左权县| 富蕴县| 自贡市| 淳安县| 瓦房店市| 永川市| 上林县| 甘泉县| 正阳县|