1, текущий каталог TXT
BAT: реж / ON / B> 0 .txt
текущего файла + подтексты летучая реж / с / о / б > 0.txt
2, основная папка картинка генерируется видео
для / ф " delims = [ " % я в (input.txt) делать D: \\ Software \\ ffmpeg- 20191026 - 1054752 -win64- статический \\ бен \\ ffmpeg.exe -f -i image2 F: \\ cqVideo \\ 19 - 10 - 24 \\ 19 - 10 -24_16 \\% я \\% d.jpg -vcodec libx264 -r 25 -b 700000 F: \\% i.h264
3, пакетный формат преобразование видео
для % а в ( " 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, видео сохраняется в виде фотографий, создавать папки и вложенные папки, подпапки для создания видеоизображений
ИНТ основной () { станд :: ifstream FIN ( " F: \\ cqVideo 19-10-26MP4 \\ \\ 0.txt " ); // открыть исходный образец списка файлов изображений Строка imgName; Mat colorimage; ИНТ videoCnt = 0 ; это время (GetLine (FIN, imgName)) // список , чтобы прочитать файл построчно { videoCnt ++ ; строка videoPath с = imgName; VideoCapture Capture (videoPath с); // читать видео IF (capture.isOpened (!)) // определение того , чтобы открыть файл { COUTVideoPath с << << " Видео не Open ... " << End L , ; Продолжить ; } Строка Dirname = videoPath.substr (videoPath.find_last_of ( " \\ " ) + 1. ); Строка saveImageName dirName.substr = ( 0 , Dirname .find_first_of ( " " )); // фото папки, необходимо создать новую строку hourDirName = videoPath.substr ( 26 , 11 ); // часов папки, необходимо создать новый // COUT << saveDirName <<ЕпсИ; // сохранить изображение Строка hourDir = " F .: 19-10-25 \\ \\ \\ cqVideo " + hourDirName + " \\ " ; ЕСЛИ (_mkdir (hourDir.c_str ()) == - . 1 ) { _mkdir (hourDir .c_str ()); // возвращает 0 создан успешно, -1 указывает отказ } Строка imagedir = hourDir saveImageName + + " \\ " ; IF (_mkdir (imageDir.c_str ()) == - . 1 ) { _mkdir (imagedir .c_str ()); // возвращает 0 создан успешно, -1 указывает на отказ } Intкол = 0 ; в то время как ( истинно ) { кол ++ ; захватить >> colorImage; // 读入图片 если (colorImage.empty ()) { соиЬ << " нет изображения ... " << епсИ; перерыв ; } Если (colorImage.channels ()! = 3 ) { соиЬ << " не три ... " << End L , ; cvtColor (colorImage, colorImage, CV_GRAY2BGR); } Если (! ColorImage.rows = 640 ) { соиЬ << videoPath << "ошибка строки " << епсИ; } Rect рои ( 297 , 623 , 7 , 8 ); // прямоугольник (colorImage, рои, Скалярное (0, 255, 255), 1); для ( INT I = 623 ; я < 632 ; я ++ ) { для ( Int= J 297 , J < 305 ; j ++ ) { // COUT << (целое) colorImage.at <Vec3b> (I, J) [0] << епсИ; // COUT << (целое) colorImage.at <Vec3b > (I, J) << епсИ [1.]; // COUT << (целое) colorImage.at <Vec3b> (I, J) [2] << епсИ; // работы каждого значения пикселя // синим канал colorImage.at <Vec3b> (I, J) [ 0 ] = 20 ; // зеленый канал colorImage.at <Vec3b> (I, J) [ 1. =] 20 ; //通道红色 colorImage.at <Vec3b> (I, J) [ 2 ] = 20 ; } } PutText (colorImage, " 5 " , резюме :: Точка ( 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