[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를 사용하여 이미지에서 컨투어를 검출하고, 해당 컨투어를 원본 이미지에 그리는 간단한 예제입니다. 영상 처리와 컴퓨터 비전 관련 작업을 수행할 때 컨투어 검출은 매우 유용하며, 다양한 응용 프로그램에서 활용될 수 있습니다.