Python : putText 文字の書き込み

 Opencvを使った、画像への文字の書き込みについてです。

カメラを使った処理を使うときは、カメラに数字を書いたり、

文字を書いたりと、割と活躍する機能です。

 

OpenCVを使うのはモジュールは

import cv2

今回は、numpyで作った画像に書き込むため、こちらもインポートします

import numpy as np

 

文字を書き込むようのブランク画像を作ります。

※ブランク画像の説明はこちら

img_blank = np.full((250, 600, 3), (255,255,255), dtype=np.uint8)

 

書き込むフォントを指定します。

fontType = cv2.FONT_HERSHEY_COMPLEX

 

文字を書き込みます。

#青、サイズ1、太さ5の文字

cv2.putText(img_blank,' Blue',(0,80), fontType, 1, (255, 0, 0), 5)

#緑、サイズ1、太さ3の文字
cv2.putText(img_blank,' Green',(0,160), fontType, 1, (0, 255, 0),3)

#赤、サイズ1、太さ1の文字
cv2.putText(img_blank,' Red',(0,240), fontType, 1, (0, 0, 255), 1)

#青、サイズ3、太さ1の文字

cv2.putText(img_blank,' Blue',(100,80), fontType, 3, (255, 0, 0), 1)

#緑、サイズ3、太さ3の文字
cv2.putText(img_blank,' Green',(100,160), fontType, 3, (0, 255, 0),3)

#赤、サイズ3、太さ5の文字
cv2.putText(img_blank,' Red',(100,240), fontType, 3, (0, 0, 255), 5)

 

書き方としては、

cv2.putText(

書き込む画像の指定,

書き込む内容 ,

書き込む位置(x,y),

フォントのタイプ,

文字のサイズ,

色,

文字の太さ)

 

 こんな感じにできます↓

f:id:Kangkang1981:20200324215339j:plain

 

 

※フォントは知っている限りでは下記があります。

FONT_HERSHEY_COMPLEX
FONT_HERSHEY_COMPLEX_SMALL
FONT_HERSHEY_DUPLEX
FONT_HERSHEY_PLAIN
FONT_HERSHEY_SCRIPT_COMPLEX
FONT_HERSHEY_SCRIPT_SIMPLEX
FONT_HERSHEY_SIMPLEX
FONT_HERSHEY_TRIPLEX
FONT_ITALIC

  

 プログラムは下記です。

import numpy as np
import cv2

fontType = cv2.FONT_HERSHEY_COMPLEX

#blank画像を作成

img_blank = np.full((250, 600, 3), (255,255,255), dtype=np.uint8)

cv2.putText(img_blank,' Blue',(0,80), fontType, 1, (255, 0, 0), 5)
cv2.putText(img_blank,' Green',(0,160), fontType, 1, (0, 255, 0),3)
cv2.putText(img_blank,' Red',(0,240), fontType, 1, (0, 0, 255), 1)    

cv2.putText(img_blank,' Blue',(100,80), fontType, 3, (255, 0, 0), 1)
cv2.putText(img_blank,' Green',(100,160), fontType, 3, (0, 255, 0),3)
cv2.putText(img_blank,' Red',(100,240), fontType, 3, (0, 0, 255), 5)    

cv2.imshow("img_red",img_blank)
cv2.imwrite('putext.jpg',img_blank)


#キー入力を待つ
cv2.waitKey(0)
#全ての開いたウインドウ閉じる
cv2.destroyAllWindows()
    

 

今までにpythonについて書いた記事はここにリンク を貼ってあります。

興味があればぜひご覧ください。