[c++] 동영상 파일에 필터 적용하기

이번 포스트에서는 C++를 사용하여 동영상 파일에 필터를 적용하는 방법에 대해 알아보겠습니다.

동영상 파일 읽기

먼저 OpenCV를 사용하여 동영상 파일을 읽는 방법부터 알아봅시다. OpenCV는 VideoCapture 클래스를 사용하여 동영상 파일을 읽을 수 있습니다.

#include <opencv2/opencv.hpp>

int main() {
    cv::VideoCapture video("input.mp4");

    if (!video.isOpened()) {
        std::cerr << "Error: Cannot open video file" << std::endl;
        return -1;
    }

    // 동영상 파일 읽기 성공
    // 필터 적용 및 결과 동영상 파일 출력
    // ...
  
    video.release();
    return 0;
}

필터 적용하기

OpenCV를 사용하여 동영상에 다양한 필터를 적용할 수 있습니다. 예를 들어, 그레이스케일로 변환하거나 블러(Blur) 효과를 적용할 수 있습니다.

cv::Mat frame;
cv::Mat processedFrame;

while (true) {
    video >> frame;
  
    if (frame.empty()) {
        break;
    }
  
    // 필터 적용
    cv::cvtColor(frame, processedFrame, cv::COLOR_BGR2GRAY); // 그레이스케일로 변환 예시
    // cv::GaussianBlur(frame, processedFrame, cv::Size(5, 5), 0); // 가우시안 블러 예시
  
    // 결과 동영상 파일로 출력
    // ...
}

동영상 파일 저장

필터가 적용된 결과를 새로운 동영상 파일로 저장할 수 있습니다.

cv::VideoWriter outputVideo("output.mp4", 
                            cv::VideoWriter::fourcc('M', 'J', 'P', 'G'), 
                            video.get(cv::CAP_PROP_FPS), 
                            cv::Size(video.get(cv::CAP_PROP_FRAME_WIDTH), video.get(cv::CAP_PROP_FRAME_HEIGHT)));

while (true) {
    video >> frame;
  
    if (frame.empty()) {
        break;
    }
  
    // 필터 적용
    // ...
  
    // 결과 동영상 파일로 출력
    outputVideo.write(processedFrame);
}

outputVideo.release();

마무리

이렇게 OpenCV를 사용하여 C++로 동영상 파일에 필터를 적용하고 결과를 저장하는 방법에 대해 알아보았습니다. 추가적으로 다양한 필터와 영상처리 기술을 적용하여 원하는 효과를 얻을 수 있습니다.

더 자세한 내용은 OpenCV 공식 문서를 참고하시기 바랍니다.