Contents
- 1 線分の描画
- 2 矢印の描画
- 3 マーカーの描画
- 4 文字の描画
- 5 リファレンス
- 5.1 arrowedLine(img, pt1, pt2, color, thickness = 1, line_type = cv2.LINE_8, shift = 0, tipLength = 0.1)
- 5.2 drawMarker(img, position, color, markerType = cv2.MARKER_CROSS, markerSize = 20, thickness = 1, line_type = cv2.LINE_8)
- 5.3 line(img, pt1, pt2, color, thickness = 1, lineType = cv2.LINE_8, shift = 0)
- 5.4 putText(img, text, org, fontFace, fontScale, color, thickness = 1, lineType = cv2.LINE_8, bottomLeftOrigin = False)
- 5.5 列挙型
- 6 関連記事・スポンサーリンク
線分の描画
line関数を用いて、画像・始点・終点・色を指定することで線分を描画します。
import numpy as np import cv2 img = np.zeros((500, 500, 3), np.uint8) cv2.line(img, (100, 100), (400, 400), (255, 0, 255)) cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows()

line関数のthickness引数で線分の太さを調節することができます。
import numpy as np import cv2 img = np.zeros((500, 500, 3), np.uint8) cv2.line(img, (400, 100), (100, 400), (255, 255, 0), thickness=10) cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows()

矢印の描画
line関数の代わりにarrowedLine関数を用いることで矢印を描画します。
import numpy as np import cv2 img = np.zeros((500, 500, 3), np.uint8) cv2.arrowedLine(img, (100, 100), (400, 400), (255, 255, 0), thickness=5) cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows()

arrowedLine関数のtipLength引数で矢印の矢の部分の長さを指定できます。
import numpy as np import cv2 img = np.zeros((500, 500, 3), np.uint8) cv2.arrowedLine(img, (100, 100), (400, 400), (255, 255, 0), thickness=5, tipLength=0.5) cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows()

マーカーの描画
drawMarker関数で画像・座標・色を指定することでマーカーを描画できます。markerSize引数でマーカーの大きさを、thickness引数でマーカーの太さを指定できます。
import numpy as np import cv2 img = np.zeros((500, 500, 3), np.uint8) cv2.drawMarker(img, (100, 100), (255, 255, 0)) cv2.drawMarker(img, (200, 100), (255, 255, 0), markerSize=30) cv2.drawMarker(img, (300, 100), (255, 255, 0), markerSize=40) cv2.drawMarker(img, (400, 100), (255, 255, 0), markerSize=50) cv2.drawMarker(img, (100, 200), (255, 255, 0)) cv2.drawMarker(img, (200, 200), (255, 255, 0), thickness=5) cv2.drawMarker(img, (300, 200), (255, 255, 0), thickness=10) cv2.drawMarker(img, (400, 200), (255, 255, 0), thickness=15) cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows()

drawMarker関数のmarkerType引数でマーカーの種類を指定できます。
import numpy as np import cv2 img = np.zeros((500, 500, 3), np.uint8) cv2.drawMarker(img, (100, 100), (255, 255, 0), markerType=cv2.MARKER_CROSS) cv2.drawMarker(img, (200, 100), (255, 255, 0), markerType=cv2.MARKER_TILTED_CROSS) cv2.drawMarker(img, (300, 100), (255, 255, 0), markerType=cv2.MARKER_STAR) cv2.drawMarker(img, (400, 100), (255, 255, 0), markerType=cv2.MARKER_DIAMOND) cv2.drawMarker(img, (100, 200), (255, 255, 0), markerType=cv2.MARKER_SQUARE) cv2.drawMarker(img, (200, 200), (255, 255, 0), markerType=cv2.MARKER_TRIANGLE_UP) cv2.drawMarker(img, (300, 200), (255, 255, 0), markerType=cv2.MARKER_TRIANGLE_DOWN) cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows()

文字の描画
putText関数で画像・文字列・座標・フォント・サイズ・色を指定することで文字を描画できます。フォントには以下のような種類があります。
import numpy as np import cv2 img = np.zeros((500, 700, 3), np.uint8) cv2.putText(img, 'FONT_HERSHEY_SIMPLEX', (50, 100), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 0)) cv2.putText(img, 'FONT_HERSHEY_PLAIN', (50, 150), cv2.FONT_HERSHEY_PLAIN, 1, (255, 255, 0)) cv2.putText(img, 'FONT_HERSHEY_DUPLEX', (50, 200), cv2.FONT_HERSHEY_DUPLEX, 1, (255, 255, 0)) cv2.putText(img, 'FONT_HERSHEY_COMPLEX', (50, 250), cv2.FONT_HERSHEY_COMPLEX, 1, (255, 255, 0)) cv2.putText(img, 'FONT_HERSHEY_TRIPLEX', (50, 300), cv2.FONT_HERSHEY_TRIPLEX, 1, (255, 255, 0)) cv2.putText(img, 'FONT_HERSHEY_COMPLEX_SMALL', (50, 350), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (255, 255, 0)) cv2.putText(img, 'FONT_HERSHEY_SCRIPT_SIMPLEX', (50, 400), cv2.FONT_HERSHEY_SCRIPT_SIMPLEX, 1, (255, 255, 0)) cv2.putText(img, 'FONT_HERSHEY_SCRIPT_COMPLEX', (50, 450), cv2.FONT_HERSHEY_SCRIPT_COMPLEX, 1, (255, 255, 0)) cv2.imshow('img', img) cv2.waitKey(0) cv2.destroyAllWindows()

リファレンス
arrowedLine(img, pt1, pt2, color, thickness = 1, line_type = cv2.LINE_8, shift = 0, tipLength = 0.1)
- 引数
- 戻り値
- img : 矢印が描画された画像 <ndarray>
矢印を描画します。
drawMarker(img, position, color, markerType = cv2.MARKER_CROSS, markerSize = 20, thickness = 1, line_type = cv2.LINE_8)
- 引数
- img : マーカーを描画する画像 <ndarray>
- 引数として指定したimgにもマーカーが上書きされてしまうので注意!
- position : マーカーの座標 <Point>
- color : マーカーの色 <Scalar>
- markerType : マーカーのタイプ(MarkerTypes列挙型で指定します) <int>
- markerSize : マーカーのサイズ <int>
- thickness : マーカーを描く線の太さ <int>
- line_type : マーカーを描く線の種類(LineTypes列挙型で指定します) <int>
- img : マーカーを描画する画像 <ndarray>
- 戻り値
- img : マーカーを描画した画像 <ndarray>
指定されたマーカーを描画します。
line(img, pt1, pt2, color, thickness = 1, lineType = cv2.LINE_8, shift = 0)
- 引数
- 戻り値
- img : 線分が描画された画像 <ndarray>
指定された2点を結ぶ線分を描画します。
putText(img, text, org, fontFace, fontScale, color, thickness = 1, lineType = cv2.LINE_8, bottomLeftOrigin = False)
- 引数
- img : 文字列を描画する画像 <ndarray>
- 引数として指定したimgにも文字列が上書きされてしまうので注意!
- text : 描画する文字列 <str>
- org : 文字列の左下隅の座標 <Point>
- fontFace : フォントの種類(HersheyFonts列挙型で指定します) <int>
- fontScale : フォントのスケールファクタ <float>
- color : フォントの色 <Scalar>
- thickness : フォントの太さ <int>
- lineType : フォントの線の種類(LineTypes列挙型で指定します) <int>
- bottomLeftOrigin : 画像データの原点の位置を指定します <bool>
- True -> 画像データの左下が原点
- False -> 画像データの左上が原点
- img : 文字列を描画する画像 <ndarray>
- 戻り値
- img : 文字列が描画された画像 <ndarray>
指定された文字列を画像に描画します。
列挙型
HersheyFonts
FONT_HERSHEY_SIMPLEX | 0 | サンセリフ体(普通サイズ) |
FONT_HERSHEY_PLAIN | 1 | サンセリフ体(小さいサイズ) |
FONT_HERSHEY_DUPLEX | 2 | サンセリフ体(普通サイズ、SIMPLEXより複雑) |
FONT_HERSHEY_COMPLEX | 3 | セリフ体(普通サイズ) |
FONT_HERSHEY_TRIPLEX | 4 | セリフ体(普通サイズ、COMPLEXより複雑) |
FONT_HERSHEY_COMPLEX_SMALL | 5 | セリフ体(小さいサイズ) |
FONT_HERSHEY_SCRIPT_SIMPLEX | 6 | 手書き風フォント |
FONT_HERSHEY_SCRIPT_COMPLEX | 7 | 手書き風フォント(SIMPLEXより複雑) |
FONT_ITALIC | 16 | イタリック体(他のフォントと組み合わせて使う) |
LineTypes
FILLED | -1 | |
LINE_4 | 4 | 4連結 |
LINE_8 | 8 | 8連結 |
LINE_AA | 16 | アンチエイリアス |
MarkerTypes
MARKER_CROSS | 0 | 「+」マーカー |
MARKER_TILTED_CROSS | 1 | 「×」マーカー |
MARKER_STAR | 2 | 「*」マーカー |
MARKER_DIAMOND | 3 | 「◇」マーカー |
MARKER_SQUARE | 4 | 「□」マーカー |
MARKER_TRIANGLE_UP | 5 | 「△」マーカー |
MARKER_TRIANGLE_DOWN | 6 | 「▽」マーカー |