我刚刚为录像机和录像机编写了第一个程序。我从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;
请告诉我我的错误是什么!
P.S。
当我删除行record << frame;
时,它运行良好。我认为该行引起的错误。
我发现即使没有改变,wiki源程序也会犯同样的错误。
答案 0 :(得分:0)
我看到的第一个错误是文件路径。你必须这样给他们:C:\\Users\\....
答案 1 :(得分:0)
请确保opencv_ffmpegXXX.dll正常工作