[c++] 컨투어 검출
컨투어 검출을 위해 OpenCV와 같은 라이브러리를 사용할 수 있습니다. 아래는 C++ 언어로 OpenCV를 활용한 기본적인 컨투어 검출 코드입니다.
#include <opencv2/opencv.hpp>
int main() {
// 이미지 로드
cv::Mat image = cv::imread("input.jpg", cv::IMREAD_COLOR);
// 그레이스케일 변환
cv::Mat gray;
cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);
// 가우시안 블러 필터 적용
cv::GaussianBlur(gray, gray, cv::Size(5, 5), 0);
// Canny 엣지 검출
cv::Mat edges;
cv::Canny(gray, edges, 50, 150);
// 컨투어 검출
std::vector<std::vector<cv::Point>> contours;
std::vector<cv::Vec4i> hierarchy;
cv::findContours(edges, contours, hierarchy, cv::RETR_TREE, cv::CHAIN_APPROX_SIMPLE);
// 검출된 컨투어를 원본 이미지에 그리기
cv::Mat contourImage = cv::Mat::zeros(image.size(), CV_8UC3);
for (size_t i = 0; i < contours.size(); i++) {
cv::drawContours(contourImage, contours, (int)i, cv::Scalar(0, 255, 0), 2, cv::LINE_8, hierarchy, 0);
}
// 결과 출력
cv::imshow("Contours", contourImage);
cv::waitKey(0);
return 0;
}
위 코드는 OpenCV를 사용하여 이미지에서 컨투어를 검출하고, 해당 컨투어를 원본 이미지에 그리는 간단한 예제입니다. 영상 처리와 컴퓨터 비전 관련 작업을 수행할 때 컨투어 검출은 매우 유용하며, 다양한 응용 프로그램에서 활용될 수 있습니다.