OpenCV 는 윤곽 길이/둘레 와 면적 을 계산한다.
윤곽 면적
윤곽 면적 은 각 윤곽 의 모든 픽 셀 점 이 구역 으로 둘러싸 인 면적 을 말 하 며 단 위 는 픽 셀 이다.
double contourArea( InputArray contour, bool oriented = false );
윤곽 의 픽 셀 점윤곽 길이 /둘레
double arcLength( InputArray curve, bool closed );
이 함 수 는 윤곽 이나 곡선의 길 이 를 통계 할 수 있 으 며 함수 반환 값 은 통계 길이 이 고 단 위 는 픽 셀 이 며 데이터 형식 은 double 입 니 다.함수 의 첫 번 째 매개 변 수 는 윤곽 이나 곡선의 2D 픽 셀 점 이 고 데이터 형식 은 vector 또는 Mat 입 니 다.함수 의 두 번 째 매개 변 수 는 윤곽 이나 곡선 이 닫 혔 는 지 의 표지 이 고 true 는 닫 혔 음 을 나타 낸다.
함수 통계 의 길 이 는 윤곽 이나 곡선 이 두 픽 셀 점 과 인접 한 연결선 의 거리 이다.예 를 들 어 삼각형 의 세 개의 정점 A,B 와 C 로 구 성 된 윤곽 길 이 를 계산 할 때 함수 의 두 번 째 매개 변 수 는 true 일 때 통계 의 길 이 는 삼각형 의 세 개의 변 AB,BC 와 CA 의 길이 의 합 이다.매개 변수 가 false 일 때 통계 의 길 이 는 A 에서 C 세 점 사이 에 순서대로 연 결 된 거리 길이 의 합,즉 AB 와 BC 의 길이 의 합 이다.
단순 예시
//
// Created by smallflyfly on 2021/6/22.
//
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int main() {
Mat im = imread("rice.jfif");
resize(im, im, Size(0, 0), 0.5, 0.5);
Mat gray;
cvtColor(im, gray, CV_BGR2GRAY);
Mat imBin;
threshold(gray, imBin, 125, 255, THRESH_BINARY);
vector<vector<Point>> contours;
findContours(imBin, contours, RETR_EXTERNAL, CHAIN_APPROX_NONE);
drawContours(im, contours, -1, Scalar(255, 0, 255));
for (int i = 0; i < contours.size(); ++i) {
double area = contourArea(contours[i]);
double length = arcLength(contours[i], true);
cout << "area: " << area << " " << "length: " << length << endl;
}
imshow("im", im);
waitKey(0);
destroyAllWindows();
return 0;
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 OpenCV 템플릿 프로젝트 만들기・Windows 7 Professional 64bit ・Visual Studio 2017 Version 15.9.14 · OpenCV 3.4.1 OpenCV의 도입 방법 등은 아래를 참조하십시오. Visual Stu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.