目標
- OpenCVで異なる幾何学図形を描画してみましょう
- 次の関数を学びましょう:
cv2.line()
,cv2.circle()
,cv2.rectangle()
,cv2.ellipse()
,cv2.putText()
等.
コード
上記の関数では,以下の共通する引数が与えられます.
- img: 図形を描画したい画像の場所
- color: 図形の色.BGRで表現するにはタプルを(eg: 青であれば(255, 0, 0)),グレイスケールであればスカラー値を与えます.
- thickness: 線や円などの太さ.図形を塗りつぶしたければ -1 を与えます.デフォルトでは
thickness = 1
です. - lineType: 線のタイプ.8-connnectedかアンチエイリアスな線にするか,等.デフォルトでは
8-connected
です.cv2.LINE_AA
は見た目のよい曲線となるアンチエイリアスな線になります.
線を描く
線を描くには,線の始点と終点の座標を与える必要があります.黒い画像の上に,青い線を左上から右下に描画します.
黒い画像に青線を描画するプログラム
実行結果
長方形を描く
長方形を描くには,長方形の左上端と右下端の座標を与える必要があります.
cv2.rectangle(画像,左上端,右下端,色,太さ)
円を描く
円を描くには,中心の座標と半径を与える必要があります.
円を描画するプログラム
実行結果
楕円を描く
楕円を描くには,いくつかの変数を与える必要があります.まずは中心の座標(x,y),次は長径と短径です(長径, 短径).角度は反時計回りの楕円の回転の角度です.starAngleとendAngleは長軸から時計回りのアーク長の始まりと終わりを示します.i.e. 0と360与えれば完全な楕円になります.より詳細な情報は cv2.ellipse()
を確認してください.
楕円を描画するプログラム
実行結果
ポリゴンを描く
ポリゴンを描くには,頂点座標を与える必要があります.各頂点は1×2行形式の配列にint32型で与える必要があります,
ポリゴンを描画するプログラム
実行結果
第3引数の
isClosed
にFalse
を与えると閉じた図形ではなくすべての点を繋ぎます.cv2.polylines()
は複数の線を描画する事ができます.描画したい線のリストを作りこの関数に与えるだけです.すべての線は独立して描画されます.線のグループを描画するときには cv2.line()
でそれぞれの線を描画するよりも高速でよりよい手法です.
画像にテキストを追加する
画像にテキストを追加するには次のことを決める必要があります
- 描きたいテキストデータ
- 配置したい位置の座標(i.e. データが始まるのは左下です)
- フォントタイプ(
cv2.putText()
ドキュメントでサポートするフォントを確認してください) - 色や太さ,線のタイプなどの設定.視認性を良くするために
cv2.LINE_AA
の使用が推奨されています
画像にテキストを追加するプログラム
実行結果