videocapture reproducir guardar example con c++ opencv video image-processing

c++ - reproducir - videocapture python



Cómo escribir un archivo de video en OpenCV 2.4.3 (2)

Estoy usando OpenCV 2.4.3 para leer y escribir un archivo de video. Mi código es así:

cv::VideoCapture video; video.open ( "D://testVideo.avi" ); cv::VideoWriter output; output.open ( "D://outputVideo.avi", CV_FOURCC(''D'',''I'',''V'',''X''), 120, cv::Size ( 1200,1600), true ); cv::Mat img; for ( int n = 0; ; n ++ ) { video >> img; output.write ( img ); }

Luego, el resultado del video fue un archivo vacío, y no pude abrirlo. ¿Qué hice mal aquí?


El problema podría ser el códec que estás usando.

Una prueba simple para asegurarse de que sus cosas funcionen correctamente es simplemente recuperar marcos de una cámara web y escribirlos en un archivo de video:

// Load input video cv::VideoCapture input_cap(argv[1]); if (!input_cap.isOpened()) { std::cout << "!!! Input video could not be opened" << std::endl; return; } // Setup output video cv::VideoWriter output_cap(argv[2], input_cap.get(CV_CAP_PROP_FOURCC), input_cap.get(CV_CAP_PROP_FPS), cv::Size(input_cap.get(CV_CAP_PROP_FRAME_WIDTH), input_cap.get(CV_CAP_PROP_FRAME_HEIGHT))); if (!output_cap.isOpened()) { std::cout << "!!! Output video could not be opened" << std::endl; return; } // Loop to read from input and write to output cv::Mat frame; while (true) { if (!input_cap.read(frame)) break; output_cap.write(frame); } input_cap.release(); output_cap.release();


Usted declara la cv::VideoWriter output de cv::VideoWriter output del tamaño de cuadro 1200 * 1600. Así que cambie el tamaño del marco a 1200 * 1600 usando cv::resize(img,img,cv::Size(1200,1600)); before output.write(img);