[c++] 영상처리 및 컴퓨터 비전 라이브러리 활용하기

영상처리 및 컴퓨터 비전은 많은 분야에서 활용되고 있습니다. C++을 사용하여 영상처리 및 컴퓨터 비전을 구현하는 방법을 알아보겠습니다.

OpenCV 라이브러리 소개

OpenCV는 컴퓨터 비전 프로그래밍을 위한 오픈 소스 라이브러리로, C++, Java, Python 등 다양한 언어에서 사용할 수 있습니다. 영상처리, 객체 탐지, 얼굴 인식 등 다양한 기능을 제공합니다.

OpenCV 설치

OpenCV를 사용하기 위해서는 먼저 라이브러리를 설치해야 합니다. 다음은 OpenCV를 설치하는 간단한 방법입니다.

$ sudo apt-get update
$ sudo apt-get install libopencv-dev

영상 불러오기 및 표시하기

#include <opencv2/opencv.hpp>

int main() {
    // 영상 불러오기
    cv::Mat image = cv::imread("image.jpg");

    // 영상 표시하기
    cv::imshow("Image", image);
    cv::waitKey(0);

    return 0;
}

위 코드는 OpenCV를 사용하여 영상을 불러오고 표시하는 간단한 예제입니다.

이미지 필터링

#include <opencv2/opencv.hpp>

int main() {
    cv::Mat image = cv::imread("image.jpg");
    
    // 이미지를 회색조로 변환
    cv::Mat grayImage;
    cv::cvtColor(image, grayImage, cv::COLOR_BGR2GRAY);

    // 가우시안 블러 적용
    cv::Mat blurredImage;
    cv::GaussianBlur(grayImage, blurredImage, cv::Size(5, 5), 0);

    // 영상 표시하기
    cv::imshow("Blurred Image", blurredImage);
    cv::waitKey(0);

    return 0;
}

위 코드는 영상의 색상을 회색조로 변환하고 가우시안 블러를 적용하여 이미지를 흐리게 만드는 예제입니다.

객체 탐지

#include <opencv2/opencv.hpp>

int main() {
    cv::Mat image = cv::imread("image.jpg");

    // Haar Cascade 분류기 로드
    cv::CascadeClassifier faceCascade;
    faceCascade.load("haarcascade_frontalface_default.xml");

    // 얼굴 탐지
    std::vector<cv::Rect> faces;
    faceCascade.detectMultiScale(image, faces, 1.1, 2, 0, cv::Size(30, 30));

    // 찾은 얼굴 표시
    for (const auto& face : faces) {
        cv::rectangle(image, face, cv::Scalar(255, 0, 0), 2);
    }

    // 영상 표시
    cv::imshow("Detected Faces", image);
    cv::waitKey(0);

    return 0;
}

위 코드는 OpenCV의 Haar Cascade 분류기를 사용하여 이미지에서 얼굴을 탐지하고 표시하는 예제입니다.

마치며

이렇게 간단히 OpenCV를 활용하여 C++로 영상처리 및 컴퓨터 비전 기술을 구현할 수 있습니다. 더 많은 기능을 구현하고 싶다면 OpenCV의 다양한 기능과 API에 대해 더 알아보시기 바랍니다.