1、カレントディレクトリのtxt
BAT:DIR / ON / B> 0の.txt
現在のファイル+サブファイルバットDIR / S / / Bの > 0.txt
2、バルクフォルダの画像生成ビデオ
用 / F " delimsの= [ "%I で(INPUT.TXT)を行う D:\\ソフトウェア\\ ffmpeg- 20191026 - 1054752 -win64- 静的 \\ビン\\ ffmpeg.exe -f画像2 -i F:\\ cqVideo \\ 19 - 10 - 24 \\ 19 - 10 -24_16 \\%I \\%D.JPG -vcodec libx264 -r 25 -b 700000 F:\\%i.h264
3バッチのビデオフォーマット変換
用%のA で("F:\\ cqVideo \\ 19-10-26 \\ 19-10-26_00 \\ * H264 ")を行う D:\\ \\ソフトウェアffmpeg- 20191028 -68f623d-win64- 静的を \ \ binに\\ ffmpeg.exe -i " %" -threads 2 -vcodec libx264 -preset -crf遅い20 -y " F:\\ 00result \\%〜na.mp4を"
4は、ビデオはビデオ画像を作成するためのフォルダとサブフォルダ、サブフォルダを作成し、画像として保存されます
int型のmain() { ::はifstreamのFINのSTD(" F:\\ cqVideo 19-10-26MP4 \\ \\ 0.txt "); //は、元のサンプル画像ファイルリストの開き 文字列imgNameを。 マットcolorImage; INT videoCnt = 0 ; 一方(のgetline(FIN、imgName))// 行ずつファイルリストを読み込みます { videoCnt ++ ; 文字列 videoPath = imgName。 VideoCapture(とvideoPath)をキャプチャ; // 読み出された映像 IF(!capture.isOpened())// ビデオファイルを開くかどうかを判断 { coutの << videoPath << " ビデオ開いていない... " << てendl; 続け; } 文字列 dirNameに= videoPath.substr(videoPath.find_last_of(" \\ ")+ 1 ); 文字列 saveImageName dirName.substr =(0、dirName.find_first_of(" ")); // Picturesフォルダは、新しい作成する必要があり、文字列 = hourDirNameをvideoPath.substr(26、11); // 時間フォルダは、新しい作成する必要が // coutの<<てendl << saveDirNameを。 // 保存图片 文字列 hourDir = " F:\\ cqVideo \\ 19-10-25 \\ " + hourDirName + " \\ " ; もし(_mkdir(hourDir.c_str())== - 1 ) { _mkdir(hourDir.c_strは()); // -1失敗したことを示し、0は正常に作成返します } 文字列 IMAGEDIR = hourDir + saveImageName + " \\ " ; もし(_mkdir(imageDir.c_str())== - 1 ) { _mkdir(imageDir.c_strは()); // -1失敗したことを示し、0は正常に作成返します } int型のカウント= 0 ; しばらく(真) { カウント ++ ; キャプチャ >> colorimageを; // 絵に読み込ま IF (colorImage.empty()) { 裁判所未満 << " ノーイメージ... " << てendl; 破ります; } もし(colorImage.channels()!= 3 ) { 裁判所未満 << " ではない3 ... " << てendl; cvtColor(colorImage、colorImage、CV_GRAY2BGR)。 } もし(colorImage.rows!= 640 ) { COUT << videoPath << " 行エラー" << ENDL。 } RECTのROI(297、623、7、8 )。 // 矩形(colorImage、ROI、スカラー(0、255、255)、1)。 以下のための(int型 I = 623 ;私は< 632 ; iが++ ) { 用(INT J = 297、J < 305 ; J ++ ) { // COUT <<(INT)colorImage.at <Vec3b>(I、J)[0] << ENDL; // [1] << COUT(INT)colorImage.at <Vec3b>(I、J)<< ENDL; // COUT <<(INT)colorImage.at <Vec3b>(i、j)は、[2] << ENDL; // 各画素値の操作 // 青チャネル colorImage.at <Vec3b>(I、J )[ 0 ] = 20 ; // 緑色チャネル colorImage.at <Vec3b>(I、J)[ 1 ] = 20 ; // 赤チャネル colorImage.at <Vec3b>(I、J)[ 2 ] = 20 。 } } putText(colorImage、" 5 "、CV ::ポイント(297、630)、CV_FONT_HERSHEY_COMPLEX_SMALL、0.5、スカラー(255、255、255)、1 )。 文字列名= IMAGEDIR + to_stringに(カウント)+ " .JPG " 。 関数imwrite(名前、colorImage)。 // 関数imshow( "colorImage"、colorImage)。 // waitKey(0); } } リターン 0 ; }
図5に示すように、単一のビデオフォーマット変換
ffmpegの-i input.avi output.mp4