임의의 곡선을 형성하는 점들의 집합을 가지고 있을 때, 해당 곡선의 길이를 구하고 싶다면 arcLength() 함수를 사용할 수 있습니다.
double arcLength(InputArray curve, bool closed); |
|
• curve |
입력 곡선 |
• closed |
폐곡선 여부 |
• 반환값 |
입력 곡선의 길이 |
arcLength() 함수는 입력 곡선의 길이를 계산하여 반환합니다. 입력 곡선 curve에는 보통 vector <Point> 또는 vector<Point2f> 자료형의 변수를 전달합니다. 두 번째 인자 closed 값이 true이면 입력 곡선의 시작점과 끝점이 연결되어 있는 폐곡선이라고 간주하여 길이를 계산합니다.
임의의 외곽선 정보를 가지고 있을 때, 외곽선이 감싸는 영역의 면적을 알고 싶다면 contourArea() 함수를 사용합니다. contourArea() 함수 원형은 다음과 같습니다.
double contourArea(InputArray contour, bool oriented = false); |
|
• contour |
입력 곡선 |
• oriented |
진행 방향 정보 사용 여부. 이 값이 true이면 곡선의 진행 방향(시계 방향 또는 반시계 방향)에 따라 면적의 부호가 달라집니다. 이 값이 false이면 면적의 절댓값을 반환합니다. |
• 반환값 |
입력 곡선이 감싸는 면적 |
예를 들어 (0, 0), (10, 0), (0, 10) 세 점에 의해 결정되는 삼각형이 있을 때, 이 삼각형의 외곽선 길이와 면적을 구하려면 다음과 같이 코드를 작성할 수 있습니다.
vector<Point> pts = { Point(0, 0), Point(10, 0), Point(0, 10) }; cout << "len = " << arcLength(pts, true) << endl; cout << "area = " << contourArea(pts) << endl;