画像処理ソリューション
これを見れば画像処理の入門から基礎~応用まで全てがわかるのを目指して!
   
翻訳(Translate)

プロフィール

Akira

ニックネーム:Akira
東京都の町田事業所に勤務
画像処理ソフトの開発を行っています。リンクフリーです!
詳細プロフィールは こちら
お問い合わせは、こちら↓

【補助HP】
画像処理ソリューションWeb版 【Newブログ】
イメージングソリューション

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

05 | 2017/06 | 07
S M T W T F S
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

趣味のブログ

iPhone萬歳!
iPhoneの情報いろいろ。
ブログ学習帳
ブログ、SEO、アフィリエイト情報など(まだまだこれから)
俺流クラフト日記
ハンドメイド作品の記録(現在、放置中)

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

【OpenCV】動画ファイル(aviファイルなど)の再生

メインページOpenCV

動画ファイル(aviファイルなど)を再生するには、cvCaptureFromFile関数によりファイルを指定して、ビデオキャプチャ構造体を取得し、cvQueryFrame関数により1画面分の画像データ(IplImage)を取得し、このIplImageを表示すると動画の再生が可能となります。

ただし、aviファイルにはいろんなコーデックがあるので、全てのファイルが再生できる訳では無いのでご注意下さい。
また、再生できるファイルはaviファイルだけでは無いようなのですが、まだ、よく分からず要調査状態ですが、サンプルコードはこのように↓なります。

CvCapture* capture;
IplImage *frame = NULL;

//動画ファイル名
char* FileName = "tree.avi";    //C:\OpenCV2.1\samples\cより借用

//動画ファイルを開く
if((capture = cvCaptureFromFile(FileName)) == NULL){
     //ファイルが見つからない時          
     return;
}

//ウィンドウを開く
cvNamedWindow("CaptureFromFile", CV_WINDOW_AUTOSIZE);

while (1) {
     //動画ファイルからフレーム画像(IplImage)の取込
     frame = cvQueryFrame (capture);
     if (frame == NULL)
          break;
     //画像の表示
     cvShowImage ("CaptureFromFile", frame);
     //キー入力待ち(Escキーで終了)
     if (cvWaitKey (30) == '\x1b')
          break;
     }

//解放
cvReleaseCapture(&capture);
cvDestroyWindow("CaptureFromFile");

上記のプログラムを実行すると、このようになります。

動画(aviファイルなど)の再生

また、動画の情報やフレームの制御などはcvSetCaptureProperty / cvGetCaptureProperty関数を用いて行います。

以下、使用する関数のリファレンスです。

cvCaptureFromFile関数

動画ファイルを指定しキャプチャを初期化します。

CvCapture* cvCaptureFromFile( const char* filename );
 
filename動画のファイル名を指定します。

cvReleaseCapture関数

cvCaptureFromFile関数で取得したCvCapture構造体を解放します。

CvCapture* cvReleaseCapture( CvCapture+* capture );
 
capturecvCaptureFromFile関数の戻り値を指定します。

cvQueryFrame関数

動画から画像データ(IplImage)を取得します。

IplImage* cvQueryFrame( CvCapture* capture );
 
capturecvCaptureFromFile関数の戻り値を指定します。

この関数で取得したIplImageは解放や変更はしてはいけないとのこと。
取得した画像を処理する場合は、取得したIplIamgeをcvCloneImageやcvCopyでコピーしてから処理した方が良さそうです。

cvGetCaptureProperty関数

動画情報を取得します。

double cvGetCaptureProperty( CvCapture* capture, int property_id );
 
capturecvCaptureFromFile関数の戻 り値を指定します。
property_idCV_CAP_PROP_POS_MSEC動画の再生位置をmsec単位で取得します。
CV_CAP_PROP_POS_FRAMES動画の再生位置をフレーム番号で取得します。
CV_CAP_PROP_POS_AVI_RATIO動画の再生位置を全体の割合(0.0~1.0)で取得します。
CV_CAP_PROP_FRAME_WIDTH画像の幅を取得します。
CV_CAP_PROP_FRAME_HEIGHT画像の高さを取得します。
CV_CAP_PROP_FPS動画のフレームレート(1秒あたりのフレーム数)を取得します。
CV_CAP_PROP_FOURCCFourCC(コーデックの種類)を取得します。

cvSetCaptureProperty関数

動画情報を設定します。

int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
 
capturecvCaptureFromFile 関数の戻 り値を指定します。
property_idCV_CAP_PROP_POS_MSEC動 画の再生位置をmsec単位で設定します。
CV_CAP_PROP_POS_FRAMES動 画の再生位置をフレーム番号で設定します。
CV_CAP_PROP_POS_AVI_RATIO動画の再生位置を全体の割合(0.0~1.0)で設定します。
CV_CAP_PROP_FRAME_WIDTH画像の幅を設定します。
CV_CAP_PROP_FRAME_HEIGHT画像の高さを設定します。
CV_CAP_PROP_FPS動画のフレームレート(1秒あたりのフレーム数)を設定します。
CV_CAP_PROP_FOURCCFourCC(コーデックの種類)を設定します。
value設定値

その他

上記関数は全ての動画ファイルに対応している訳ではありません。
とりあえず、OpenCV2.1に付属していたファイル(C:\OpenCV2.1\samples\c内のtree.avi)を使ってみたところ、一通りの値が取得でき、cvSetCapturePropertyでフレーム番号を指定して再生する事もできたのですが、動画の再生位置に関しては取得も設定もできないファイルもあったので、何か良い方法はないか?調べている途中です。
でも、とりあえずは値の取得/設定できる形式にaviファイルを別のソフトで変換しちゃう方が早そうです。
で、設定できるファイルって???

まだまだモヤモヤモード。
わかり次第更新したいと思います。
 
 


Loading...
スポンサーリンク

この記事に対するコメント

どうもありがとうございます。(^_^)v
【2010/06/15 21:49】 URL | Akira #- [ 編集]


大変参考になりました。
【2010/06/15 21:24】 URL | koba #- [ 編集]


この記事に対するコメントの投稿














管理者にだけ表示を許可する


この記事に対するトラックバック
トラックバックURL
→http://imagingsolution.blog107.fc2.com/tb.php/210-4ba5ca7f
この記事にトラックバックする(FC2ブログユーザー)

OpenCVで動画から静止画

環境はOSX 10.6.3 まずはOpenCVのインストール。 >sudo port selfupdate >sudo port install opencv で、ソース #include <Foundation/Foundation.h> #import <AppKi... やりなおし【2010/06/15 21:40】

現在の閲覧者数: / 合計