【发布时间】:2014-05-13 17:31:01
【问题描述】:
我刚刚为 videocaptur 和 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。 (我没有调谐卡或相机。)来源是
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;
请告诉我我的错误是什么!
附:
当我删除record << frame; 行时,它运行良好。我认为是在该行引起的错误。
我发现即使不做改动,wiki源程序也会出现同样的错误。
【问题讨论】:
标签: opencv video-capture