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);