findContours()関数などで取得した輪郭の座標から輪郭の長さを求めるにはarcLength()関数を用います。
構文
arcLength(curve, closed) ->retval
curve | 輪郭を構成する輪郭のxy座標(x, y)の配列 |
closed | 始点と終点が閉じた周囲長を求めるときはTrue 閉じていない周囲長を求めるときはFalse |
(戻り値)retval | 周囲長 |
サンプルプログラム
通常はfindContours()関数で取得した輪郭の座標を用いる場合が多いかと思いますが、今回は簡単のため、4点からなる周囲長を求めます。
この輪郭座標の閉じた周囲長(cloased = True)と、閉じていない周囲長(cloased = False)を求めます。
閉じた周囲長(cloased = True)
閉じていない周囲長(cloased = False)
import cv2
import numpy as np
# 輪郭の座標
contour = np.array(
[
[1, 2],
[1, 4],
[5, 4],
[5, 2]
],
dtype = np.int32
)
# 閉じた周囲長
perimeter = cv2.arcLength(contour, True)
print(perimeter) # 12.0
# 閉じていない周囲長
perimeter = cv2.arcLength(contour, False)
print(perimeter) # 8.0