OpenCVの研究ノート(13)は、ビデオ画像に変換します

 

キー

画像自体の解像度の解像度のパラメータの代わりに生成された映像の解像度を指定します。あなたは、解像度、またはポスト処理ソフトウェアを変更したい場合は、どちらかの画像でたときにリサイズ

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。
}

  

おすすめ

転載: www.cnblogs.com/kekeoutlook/p/11334229.html