Pythonでいろいろやってみる

Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています。

形状の異なる数字画像を大量に生成する

機械学習を行うためには大量の学習データが必要になります。0-9の10個の数字画像を大量に生成します。以下のパラメータを変えた32x32pxの画像を4320個生成しpngファイルで保存します。

  • 数字(0-9)・・・10
  • フォント・・・8
  • 文字のx位置・・・3
  • 文字のy位置・・・3
  • 回転角度・・・3
  • ぼかし処理・・・2

10 x 8 x 3 x 3 x 3 x 2 = 4320個

環境
  • windows10 home
  • Anaconda 3/ jupyter notebook 5.6.0
  • Python 3.7.0
  • OpenCV 4.0.0
準備

生成した画像データ保存用フォルダ'number_generate'をjupyter notebookファイル(***.ipynb)と同じディレクトリに作成しました。

コード
import cv2
import numpy as np
import itertools

counter = 0 # ファイル名の通し番号用カウンター
# 白画像の生成(数字の回転時に隙間ができるので40x40pxの大きめサイズにする)
img_background=np.ones((40,40), np.uint8)*255  

x_list = [9,11,13]  # x座標のリスト
y_list = [26,28,30] # y座標のリスト
angle_list = [-5,0,5]  # 回転角度のリスト
blur_list = [1,3]  # ぼかし処理のリスト

fontscale = 0.8  # フォントの大きさ
color=0  # フォントカラー(白)
# フォントリスト
fontface_list = [cv2.FONT_HERSHEY_COMPLEX,
                 cv2.FONT_HERSHEY_COMPLEX,
                 cv2.FONT_HERSHEY_DUPLEX,
                 cv2.FONT_HERSHEY_SCRIPT_COMPLEX,
                 cv2.FONT_HERSHEY_SCRIPT_SIMPLEX,
                 cv2.FONT_HERSHEY_SIMPLEX,
                 cv2.FONT_HERSHEY_TRIPLEX,
                 cv2.FONT_ITALIC]           

#数字の画像を生成、ファイル名を付けて保存
def number_generate():
    counter_str = str(counter)
    counter_zerofill = counter_str.zfill(3)
    trans= cv2.getRotationMatrix2D((20,20),angle,1)          
    for i in range(10):
        img = img_background.copy()
        number=str(i)
        filename = number+'_'+counter_zerofill+'.png'
        cv2.putText(img,number,(x,y),fontface,fontscale,color)
        img2 = cv2.warpAffine(img,trans,(40,40))
        img3 = img2[4:36,4:36]
        img3 = cv2.blur(img3,(blur,blur))
        cv2.imwrite('number_generate/'+filename,img3)

# フォントリスト、x座標、y座標、回転角度、平滑化の各リストのネストを実行        
for fontface,x,y,angle,blur in itertools.product(fontface_list,x_list,y_list,angle_list,blur_list):
    counter+=1
    number_generate() 
実行結果

少しずつ形状の違う数字が書かれた画像ファイルが保存されます。
f:id:T_A_T:20190702215749p:plain

ブログランキングに参加しています

にほんブログ村 IT技術ブログへ
にほんブログ村