OpenCV Reference

【OpenCV-Python】circle(円の描画)

OpenCVで画像に円を描画するには、circle()関数を用います。

circle()関数の構文

circle( img, center, radius, color[, thickness[, lineType[, shift]]] ) -> img

引数

img 円の描画先の画像データ
center 中心の座標 (X座標, Y座標)のタプルで指定します。
ただし、座標の値は整数です。(小数は非対応)
radius 円の半径を整数で指定します。
color 線色
カラーの場合は、(B, G, R)の順のタプルで指定します。
thickness 線幅を整数で指定します。
負の値を指定すると、大きさに関係なく、円の内側が塗りつぶされます。
lineType cv2.LINE_4     4連結
cv2.LINE_8     8連結(デフォルト)
cv2.LINE_AA   アンチエイリアス
のいずれかを指定します。
shift 点座標の小数ビット数、デフォルトで0
x, y座標が以下の式に基づいて変換されます。
(x, y) -> (x * 2^(-shift),  y * 2^(-shift))

戻り値

img 画像データに追加で円が描画された画像データ(引数で渡した画像と同じデータ)

 

lineType(アンチエイリアス)を変えながら描画したサンプル

import cv2
import numpy as np

img = np.zeros((50, 50, 3), dtype = np.uint8)

cv2.circle(img, (25, 25), 20, (255, 0, 0),  1, cv2.LINE_4)
cv2.circle(img, (25, 25), 15, (0, 255, 0),  1, cv2.LINE_8)
cv2.circle(img, (25, 25), 10, (0, 0, 255),  1, cv2.LINE_AA)

cv2.namedWindow("Image", cv2.WINDOW_NORMAL)
cv2.imshow("Image", img)
cv2.waitKey()

実行結果

OpenCV Python circle

 

線幅を変えながら描画したサンプル

import cv2
import numpy as np

img = np.zeros((50, 50, 3), dtype = np.uint8)

cv2.circle(img, (25, 25), 22, (255, 0, 0),  3)
cv2.circle(img, (25, 25), 15, (0, 255, 0),  2)
cv2.circle(img, (25, 25), 10, (0, 0, 255),  1)

cv2.namedWindow("Image", cv2.WINDOW_NORMAL)
cv2.imshow("Image", img)
cv2.waitKey()

実行結果

OpenCV Python circle

 

円の内側を塗りつぶして描画したサンプル

import cv2
import numpy as np

img = np.zeros((50, 50, 3), dtype = np.uint8)

cv2.circle(img, (25, 25), 20, (255, 0, 0),  -3)
cv2.circle(img, (25, 25), 15, (0, 255, 0),  -2)
cv2.circle(img, (25, 25), 10, (0, 0, 255),  -1)

cv2.namedWindow("Image", cv2.WINDOW_NORMAL)
cv2.imshow("Image", img)
cv2.waitKey()

実行結果

OpenCV Python circle

半径(radius)が負の場合、値の大きさに関係なく、円の内側が塗りつぶされます。

 

参考リンク

OpenCV: Drawing Functions
【OpenCV-Python】LineTypes(線描画の種類)
OpenCVで線を描画する際、斜めに線を描画すると、どうしても線がギザギザしてしまうのですが、このギザギザ部分の描画方法をLineTypes enumで指定します。 ほとんどの線や円などの描画では、 cv2.LINE_8 が初期値になってい...

 

コメント

タイトルとURLをコピーしました