我剛寫了一個videocaptur和videowriter的第一個程序。我從wiki中複製了源代碼,並更改了唯一的視頻文件名,但它造成了錯誤。opcv videowriter,我不知道爲什麼它不工作
這裏是wiki的來源。
opencv是2.1,編譯器是visual C++ 2008 express。
#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。 (我沒有tunercard或攝像頭)的來源是
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);
,並改爲
而部分錯誤是:
// add frame to recorded video
record << frame;
請告訴我什麼是我的錯!
P.S. 當我刪除行record << frame;
,它運作良好。我認爲在線路上造成的錯誤。
而且我發現即使沒有改變,wiki源程序也會出現同樣的錯誤。