[c++] 동영상 파일에서 특정 프레임 추출하기

아래는 OpenCV를 사용하여 동영상 파일에서 특정 프레임을 추출하는 간단한 예제 코드입니다.

#include <opencv2/opencv.hpp>

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

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

    int frameNumber = 100;  // 추출할 프레임 번호
    video.set(cv::CAP_PROP_POS_FRAMES, frameNumber - 1);

    cv::Mat frame;
    if (video.read(frame))
    {
        cv::imwrite("output_frame.jpg", frame);  // 프레임을 이미지로 저장
        std::cout << "Frame " << frameNumber << " extracted successfully." << std::endl;
    }
    else
    {
        std::cerr << "Error: Unable to extract frame " << frameNumber << "." << std::endl;
    }

    video.release();

    return 0;
}

이 코드는 “input_video.mp4” 파일에서 100번째 프레임을 추출하여 “output_frame.jpg”로 저장합니다. 코드 실행 시 OpenCV 라이브러리를 사용하여 동영상 파일을 열고, 지정한 프레임을 추출하여 이미지 파일로 저장합니다.

참고 문헌:

  1. OpenCV 공식 문서: https://docs.opencv.org/
  2. “Learn OpenCV 4 by Building Projects” - David Millan Escriva, Vinícius G. Mendonça, and Prateek Joshi (Packt, 2019)