opcv videoowriter, я не знаю, почему это не работает - PullRequest
0 голосов
/ 11 ноября 2011

Я только что написал первую программу для видеокаптюра и видео писателя. Я скопировал источник из вики и изменил только имя видеофайла, но он сделал ошибку.

Вот источник из вики.

opencv - 2.1, компилятор - Visual C ++ 2008, экспресс.

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main(int, char**)

{

        VideoCapture capture(1); // open the default camera

        if( !capture.isOpened() )  {

                printf("Camera failed to open!\n");

                return -1;
        }

        Mat frame;

        capture >> frame; // get first frame for size

        // record video

        VideoWriter record("RobotVideo.avi", CV_FOURCC('D','I','V','X'), 30, frame.size(), true);

        if( !record.isOpened() ) {

                printf("VideoWriter failed to open!\n");

                return -1;

        }

        namedWindow("video",1);

        for(;;)

        {
                // get a new frame from camera

                capture >> frame; 

                // show frame on screen

                imshow("video", frame); 

                // add frame to recorded video

                record << frame; 

                if(waitKey(30) >= 0) break;

        }

        // the camera will be deinitialized automatically in VideoCapture destructor
        // the recorded video will be closed automatically in the VideoWriter destructor

        return 0;
}

С источником я поменял 2 части. Один для VideoCapture. (У меня нет тюркард или камеры.) Источник

    VideoCapture capture(1); // open the default camera

и изменено на

 VideoCapture capture("C:/Users/Public/Videos/Sample Videos/WildlifeTest.wmv"); 

А другой для VideoWriter:

   // record video

    VideoWriter record("RobotVideo.avi", CV_FOURCC('D','I','V','X'), 30, frame.size(), true);

и изменено на

  VideoWriter record("C:/Users/Public/Videos/Sample Videos/WildlifeRec.wmv",
                      CV_FOURCC('W','M','V','1'), 30,frame.size(), true);

и часть ошибки:

        // add frame to recorded video

        record << frame; 

Пожалуйста, покажи мне, в чем моя ошибка!

P.S. когда я удаляю строку record << frame;, она работает хорошо. Я думаю, что ошибка вызвана на линии.

И я обнаружил, что даже если без изменений исходная программа вики делает ту же ошибку.

Ответы [ 2 ]

0 голосов
/ 13 мая 2014

, пожалуйста, убедитесь, что opencv_ffmpegXXX.dll работает правильно

0 голосов
/ 11 ноября 2011

Первая ошибка, которую я вижу, это пути к файлам.Вы должны дать им так: C:\\Users\\....

...