어떤 함수 ❓ 🤔
"그리는" 함수입니다. 다각형 형상을 이미지에 표현합니다. 이때 다각형 내면을 Fill(채우기) 함으로써, 다각형 내부를 특정 픽셀 데이터로 채우게 됩니다.
fillPoly(
타겟이미지,
다각형 포인트 어레이,
다각형 색상,
다각형 라인 타입,
... )
매개변수 (설명)
📌 타겟이미지 : 다각형을 표현하기 위한 이미지 소스를 지정합니다. Mat 형태의 이미지 파일을 지정하면 됩니다.
📌 다각형 포인트 어레이 : 포인트 데이터를 그 요소로 갖는 2차원 어레이를 지정합니다. C/C++의 일반적인 어레이 설정방법을 사용해도 되지만, vector 변수를 써보려고 노력하고 있습니다. 다각형 포인트의 순서는 시계방향 또는 반시계 방향을 생각하고 지정해주면 될 것 같습니다. 맨 처음과 맨 끝 포인트가 연결되어 폐곡선을 형성합니다.
📌 다각형 색상 : 폐곡선을 채우는 다각형 색상을 지정합니다. Scalar(Blue, Green, Red) 형태로 색상을 부여할 수 있습니다.
📌 다각형 라인 타입 : 다각형을 형성하는 직선 형태(4점 연결, 8점 연결, Anti-Aliasing 등등)를 결정합니다.
공홈 링크는 다음과 같습니다.
DEMO. ( Detail Code 🔗 )
HEIGHT, WIDTH는 각각 이미지의 높이(세로), 폭(가로) 값을 나타내며, 해당 사이즈로 이미지를 생성합니다. 그때 이미지 색깔은 흰색(BGR색상 요소 지정)으로 지정했습니다.
...
Mat img1(HEIGHT, WIDTH, CV_8UC3, Scalar(255, 255, 255));
Mat img2(HEIGHT, WIDTH, CV_8UC3, Scalar(255, 255, 255));
...
다각형(여기서는 사각형)을 구성할 포인트 어레이를 정의합니다. 첫 번째 사각형은 이미지의 왼쪽 가장자리에 직사각형 형태의 픽셀을 채웁니다. 두 번째 사각형은 이미지의 상단에 직사각형 형태로 픽셀을 채우게 했습니다.
// SQURE : 4
vector<vector<Point>> squre_point(2, vector<Point>(SQURE));
// #1 squre
squre_point[0][0] = Point(0, 0);
squre_point[0][1] = Point(GAP1, 0);
squre_point[0][2] = Point(GAP1, HEIGHT);
squre_point[0][3] = Point(0, HEIGHT);
// #2 squre
squre_point[1][0] = Point(0, 0);
squre_point[1][1] = Point(WIDTH, 0);
squre_point[1][2] = Point(WIDTH, GAP1);
squre_point[1][3] = Point(0, GAP1);
작성한 포인트 데이터를 이용해서, 아래와 같이 fillPoly 함수를 호출합니다. 다각형 색상은 두 형상 모두 파란색으로 지정했습니다.
fillPoly(img1, {squre_point[0]}, Scalar(255, 0, 0), LINE_AA);
fillPoly(img2, {squre_point[1]}, Scalar(255, 0, 0), LINE_AA);
아래와 같이, 직사각형 형태의 픽셀이 채워진 것을 확인 할 수 있습니다. fillPoly 함수는 이미지 전처리(가공) 작업할 때 필요한 경우가 있기 때문에 알아두면 좋은 기능일 것 같습니다.
'[ C++ ]' 카테고리의 다른 글
[ openCV | C++ ] ( 0 / 6 ) 차선검출. 이미지 전 처리. 파이프 라인. (0) | 2021.06.01 |
---|---|
[ openCV | C++ ] 차선 검출 이미지 전처리 작업. 왜곡 현상 보정 하는 방법. (2) | 2021.05.08 |
[ openCV | C++ ] 기본기만 배우고 차선검출 하는 방법. (0) | 2021.04.17 |
[ openCV | C++ ] HoughLinesP 함수 사용 방법. (+HoughLines함수와 비교) (0) | 2021.03.28 |
[ openCV | C++ ] HoughLines 함수 사용 방법. (차선 검출 준비단계) (0) | 2021.03.26 |