[OpenCV] Polygon Mask 폴리곤 마스크 1
Computer Vision 2026. 3. 11. 22:17 |폴리곤 마스크를 생성하고 사용해 보자.
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat image(480, 640, CV_8UC3, cv::Scalar(0, 0, 0));
//cv::Mat image = cv::Mat::zeros(480, 640, CV_8UC3);
std::vector<cv::Point> points1 = { cv::Point(100, 100), cv::Point(200, 100), cv::Point(200, 200), cv::Point(100, 200) };
std::vector<cv::Point> points2 = { cv::Point(300, 300), cv::Point(400, 300), cv::Point(400, 400), cv::Point(300, 400) };
//cv::fillPoly(image, { points1 }, cv::Scalar(0, 255, 0));
//cv::fillPoly(image, { points2 }, cv::Scalar(255, 0, 0));
// 한번에 두 개의 다각형을 그릴 때는 std::vector<std::vector<cv::Point>> 형태로 전달해야 한다.
cv::fillPoly(image, std::vector<std::vector<cv::Point>>{points1, points2}, cv::Scalar(0, 255, 0));
/*
// 포인트 벡터 배열로 다각형 생성
std::vector<std::vector<cv::Point>> pointsArray = {
{ cv::Point(100, 100), cv::Point(200, 100), cv::Point(200, 200), cv::Point(100, 200) },
{ cv::Point(300, 300), cv::Point(400, 300), cv::Point(400, 400), cv::Point(300, 400) }
};
cv::fillPoly(image, pointsArray, cv::Scalar(0, 255, 0));
*/
cv::imshow("image", image);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}

#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat mask(480, 640, CV_8UC1, cv::Scalar(0));
std::vector<cv::Point> points1 = { cv::Point(100, 100), cv::Point(200, 100), cv::Point(200, 200), cv::Point(100, 200) };
cv::fillPoly(mask, { points1 }, cv::Scalar(255));
// Invert the mask
cv::Mat invertedMask;
cv::bitwise_not(mask, invertedMask);
//invertedMask = ~mask;
cv::imshow("mask", mask);
cv::imshow("invertedMask", invertedMask);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}


#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat image = cv::imread("palvin1.png");
cv::Mat mask = cv::Mat::zeros(image.size(), CV_8UC1);
std::vector<cv::Point> points1 = { cv::Point(400, 60), cv::Point(550, 60), cv::Point(580, 250), cv::Point(370, 250) };
cv::fillPoly(mask, { points1 }, cv::Scalar(255));
cv::Mat result;
image.copyTo(result, mask);
cv::imshow("Original Image", image);
cv::imshow("Mask", mask);
cv::imshow("Result", result);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}



※ 참고
2026.03.13 - [분류 전체보기] - [OpenCV] Select Region of Interest ROI 선택
2026.03.11 - [OpenCV] - [OpenCV] Polygon Mask 폴리곤 마스크 2
'Computer Vision' 카테고리의 다른 글
| [OpenCV] Object Tracking 객체 추적 (0) | 2026.03.13 |
|---|---|
| [OpenCV] Polygon Mask 폴리곤 마스크 2 (0) | 2026.03.11 |
| [OpenCV] Analog Gauge Reading 아날로그 게이지 바늘 값 읽기 (0) | 2026.03.06 |
| [OpenCV] Structuring Element 구조적 요소 (0) | 2026.02.23 |
| [OpenCV] Python 에서 C++ DLL 사용하기 (0) | 2026.02.19 |


