趣味は車輪の再発明♪

[opencv] 動画をリサイズ


詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識
Gary Bradski Adrian Kaehler
オライリージャパン
売り上げランキング: 25,746


■ たかみんつ / ソフト開発メモINDEX / OpenCVリファレンス(じぶん用) / 関数・クラスの使い方・サンプルなど /


動画のフレームサイズを変更するサンプルプログラムです。 超解像の実験を行うために、高解像動画を画像を劣化させるために使用できます。 ピクセル間の補間はバイキュービック法になっています。拡大時に超解像処理は行いません。

使い方

  • コマンドラインで入力ファイル名と出力サイズを指定します。
  • 出力ファイル名は、入力ファイル名の後ろにサイズ表記を付け加えたものになり、拡張子はAVIに固定。(Windowsでの実装のため)
  • 既に出力ファイルと同じファイルあった場合は、確認せずに上書きされます。
  • 出力形式は変換実行時に、出力形式を選択するダイアログが開きますので、選択してください。
  • 出力のビット深度とチャネル数は入力動画と同じになります。

ソースファイル(Microsoft Visual C++ 2010 Express)

#include "stdafx.h"
#include <windows.h>
#include <opencv2/opencv.hpp>

int _tmain(int argc, _TCHAR* argv[])
{
    const char* in_filename = 0;
    CvSize dst_size;
    if(argc < 4) {
        fprintf(stderr,
        "resizeVideo <filname> "
        "<width> <height>\n");
        exit(-1);
    } else {
        in_filename = argv[1];
        dst_size.width = atoi(argv[2]);
        dst_size.height = atoi(argv[3]);
    }

    CvCapture* capture = cvCreateFileCapture(in_filename);
    if(!capture){
        fprintf(stderr, "エラー:%s を開けませんでした。\n",
            in_filename);
        exit(-1);
    }
    //出力ファイル名の生成
    char out_filename[MAX_PATH];
    char body[MAX_PATH];
    char strWidth[MAX_PATH];
    char strHeight[MAX_PATH];
    _splitpath(in_filename, 0, 0, body, 0);
    sprintf(out_filename, "%s_%sx%s.avi", body,
        itoa(dst_size.width, strWidth, 10),
        itoa(dst_size.height, strHeight, 10));
    double fps = (int)cvGetCaptureProperty(
        capture, CV_CAP_PROP_FPS);
    
    CvVideoWriter* writer = cvCreateVideoWriter(
        out_filename, -1, fps, dst_size);
    if(!writer) {
        fprintf(stderr, "出力ファイルを準備できませんでした。\n");
        exit(-1);
    }

    IplImage* src = 0;
    while((src = cvQueryFrame(capture)) != 0) {
        IplImage* dst= cvCreateImage(
            dst_size, src->depth, src->nChannels);
        cvResize(src, dst, CV_INTER_CUBIC);
        cvWriteFrame(writer, dst);
        cvReleaseImage(&dst);
    }
    cvReleaseVideoWriter(&writer);
    cvReleaseCapture(&capture);
    return 0;
}

関連文書


Pythonプロフェッショナルプログラミング 第2版
秀和システム (2015-05-21)
売り上げランキング: 1,813


クラウドではじめる機械学習 Azure MLでらくらく体験
脇森浩志 杉山雅和 羽生貴史
リックテレコム
売り上げランキング: 2,081

実践Node.js プログラミング (Programmer's SELECTION)
Mike Cantelon Marc Harter T.J. Holowaychuk Nathan Rajlich
翔泳社
売り上げランキング: 40,213

■ たかみんつ / ソフト開発メモINDEX / OpenCVリファレンス(じぶん用) / 関数・クラスの使い方・サンプルなど /



RSS Feed Widget
[opencv] 動画をリサイズ
(http://bicycle.life.coocan.jp/takamints/index.php/doc/opencv/doc/resize_video_sample)
by Koji Takami ( email: vzg03566@gmail.com, GitHub: takamin )