2014年6月18日水曜日

OpenCVを使った動画ファイルの入出力

OpenCVを使うと動画の入出力が簡単に出来る。動画ファイルを読み込む際にはcv::VideoCaptureクラスを用い、書き込みにはcv::VideoWriterクラスを用いる。書き込みの際には、コーデック、フレームレート、解像度を指定する。

各フレームの情報は ">>", "<<" 演算子で読み込み・書き込みが可能。
以下は、動画ファイルを読み込んで、別の動画ファイルに書き込みを行うコードの例。
OpenCV3.0以降を用いる場合は、CV_FOURCCが廃止されているので、cv::VideoWriter::fourccを用いてコーデックを指定する必要がある。

#include <opencv2/opencv.hpp>

int main(int argc, char** argv)
{
  //入力動画ファイルを指定
  cv::VideoCapture cap( "input.avi" );
  //出力動画ファイルの指定
  cv::VideoWriter writer( "output.avi", cv::VideoWriter::fourcc('M','J','P','G'), cap.get(cv::CAP_PROP_FPS), cv::Size((int)cap.get(cv::CAP_PROP_FRAME_WIDTH), (int)cap.get(cv::CAP_PROP_FRAME_HEIGHT)));

  cv::Mat frame;
  while( 1 )
  {
    //1フレーム読み込み
    cap >> frame;
    if( frame.empty() )
      break;

    //出力動画ファイルへ書き込み
    writer << frame;
  }
  return 0;
}


0 件のコメント:

コメントを投稿