キー
画像自体の解像度の解像度のパラメータの代わりに生成された映像の解像度を指定します。あなたは、解像度、またはポスト処理ソフトウェアを変更したい場合は、どちらかの画像でたときにリサイズ
2ノーマル終了するには、強制終了しないでください。
3は、AVI形式を生成します。
#include <iostreamの> する#include <ストリング> の#include "opencv2 /のHighGUI / highgui.hpp" の#include "opencv2 /コア/ core.hpp" の#include "opencv2 / opencv.hpp" 名前空間stdを使用。 名前空間の品種を使用しました。 空Video_To_Image(文字列のファイル名); 空Image_To_Video(); int型imagetovideo(); INTメイン() { //文字列VIDEO_NAME = "test.avi"; //注意、使用文字列时、若不用名前空間stdを使用して、需要使用のstd ::文字列 // Video_To_Image(VIDEO_NAME)。 Image_To_Video(); // imagetovideo(); 0を返します。 } ボイドVideo_To_Image(文字列のファイル名) { COUT << "--------------- Video_To_Image -----------------" << CV :: VideoCaptureキャプチャ(ファイル名)。 (もし!キャプチャ。 COUT <<「オープンビデオエラー」; } / * CV_CAP_PROP_POS_MSEC - (ミリ秒)ビデオの現在位置 CV_CAP_PROP_POS_FRAMES -ビデオ(フレーム)の現在位置 のビデオストリームの幅- CV_CAP_PROP_FRAME_WIDTH CV_CAP_PROP_FRAME_HEIGHT -ビデオストリーム高さが CV_CAP_PROP_FPS -フレームレート(フレーム/秒)* / INT frame_width =(INT)capture.get(CV_CAP_PROP_FRAME_WIDTH); INT FRAME_HEIGHT =(INT)capture.get(CV_CAP_PROP_FRAME_HEIGHT); フロートframe_fps = capture.get(CV_CAP_PROP_FPS); INT Frame_Number = capture.get(CV_CAP_PROP_FRAME_COUNT);フレームの//総数 ; COUT << << ENDL << frame_width "frame_widthが" ; COUTは<< << ENDL << FRAME_HEIGHT "FRAME_HEIGHTは" COUT << "frame_fpsは、「<< frame_fps <<てendlです。 int型NUM = 0; //フレーム数カウント CV ::マットIMGを、 文字列img_nameと、 イメージ名をチャー[20である]; CV :: namedWindow( "MyVideo"、CV_WINDOW_AUTOSIZE); 一方、(真の) { CV ::マットフレーム; //ビデオから読み出しフレーム BOOLのbSuccessのcapture.read =(フレーム); IF(bSuccess!) { COUT << "ビデオファイルはフレームから読み取ることができない" <<てendl; BREAK; } //ウィンドウMyVideoの上、現在のフレームの表示 関数imshow( "MyVideo"を、フレーム); //保存した画像名 //はsprintf(const_castを<CHAR *> (img_name.data())、 "%sの%D%s"は、 "画像"、++ NUM、 ".JPG"); //画像名保存 のsprintf(イメージ名、 "%sの% D%S"、 "画像"、++ NUM、 ".JPGを"); //は、 画像名保存 img_name =イメージ名と、 関数imwrite(img_name、フレーム); //画像を保存するために保存 IF(CV ::waitKey(30)== == 27 || NUM Frame_Number) { COUT << "Escキーを押し、" << ENDL。FRAME_HEIGHT <<てendl; coutの<< << frame_fps <<てendl "frame_fpsです"。 ライター= VideoWriter(VIDEO_NAME、CV_FOURCC( 'D'、 '私は'、 'V'、 'X')、frame_fps、サイズ(frame_width、FRAME_HEIGHT)、isColor)。 //関数imshow()。 :: namedWindow CV(、CV_WINDOW_AUTOSIZE "イメージビデオに"); int型NUM = 50; //は、絵のシートの合計数を入力しますが 、i = 1からint型 マットのimgを、 IF(writer.isOpened()!) { coutの<<「エラー:nは\ビデオライターを開けない- "<<てendl; 戻る; } ながら、(私は= NUMを<) { 文字列のパス=" F:/トンドン/学習教材1/1論文/ 2 /高密度の追跡/最新の論文を発表/コード/データ0 /オプティカルフロー追跡/結果/ TEST2 / 2GUI / 1 /。 "; to_stringに:: =パスSTD +(I ++)+ s_image_name"; .JPG」 //読み取った画像; IMG =関数imread(s_image_name) (IFを!img.data)画像が正常に転送するかどうかを判断// { 裁判所未満<< "できませんでしたロードイメージファイル... \ N-" <<てendl; BREAK; } 関数imshow( "ビデオの画像"、IMG)。 //写入 ライター<< IMG。 waitKey(1)。 IF(CV :: waitKey(30)== 27 || I == NUM) { COUT << "按下ESC键" << ENDL。 cvReleaseVideoWriter; ブレーク; } } cvReleaseVideoWriter。 }