Я только что написал первую программу для видеокаптюра и видео писателя. Я скопировал источник из вики и изменил только имя видеофайла, но он сделал ошибку.
Вот источник из вики.
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;
, она работает хорошо. Я думаю, что ошибка вызвана на линии.
И я обнаружил, что даже если без изменений исходная программа вики делает ту же ошибку.