OpenCVで線を描画する際、斜めに線を描画すると、どうしても線がギザギザしてしまうのですが、このギザギザ部分の描画方法をLineTypes enumで指定します。
ほとんどの線や円などの描画では、 cv2.LINE_8 が初期値になっています。
LineTypes enum
Filed | |
cv2.LINE_4 | 4連結 |
cv2.LINE_8 | 8連結 |
cv2.LINE_AA | アンチエイリアス |
4連結、8連結という言葉はラベリング処理の時に登場しますが、
4連結は、上下、左右方向につながった線で描画します。
8連結は、上下、左右、斜め方向につながった線で描画します。
アンチエイリアスは、ギザギザの部分をぼかして描画します。
具体的には、次のサンプルを参照ください。
サンプルプログラム
import cv2
import numpy as np
img = np.zeros((80, 50), dtype = np.uint8)
cv2.line(img, (5, 5), (45, 20), 255, 1, cv2.LINE_4)
cv2.line(img, (5, 15), (45, 30), 255, 1, cv2.LINE_8)
cv2.line(img, (5, 25), (45, 40), 255, 1, cv2.LINE_AA)
cv2.circle(img, (20, 60), 15, 255, 1, cv2.LINE_4)
cv2.circle(img, (20, 60), 10, 255, 1, cv2.LINE_8)
cv2.circle(img, (20, 60), 5, 255, 1, cv2.LINE_AA)
cv2.namedWindow("Image", cv2.WINDOW_NORMAL)
cv2.imshow("Image", img)
cv2.waitKey()
実行結果
※文字の部分は別途、画像処理ソフトで追加しています。
参照ページ
OpenCV: Drawing Functions
コメント