OpenCV VideoWriter无法打开

时间:2014-02-10 16:40:27

标签: c++ opencv video-recording

使用OpenCV 2.4.8(预构建的二进制文件)运行Windows 7,x64。

尝试以下基本代码:

VideoWriter wrt;
wrt.open("video.mp4",  -1, 29, Size(480, 640));

这没有任何作用。编解码器选择的预期弹出窗口不会打开,编写器也不会打开(即对wrt.isOpen()的调用返回false)。此外,writer类wrt.writer内的内部指针仍为空。

尝试:

  1. Debug和Release OpenCV二进制文件。
  2. 根据thisopencv_ffmpeg248.dll复制到可执行文件的目录。
  3. 传递CV_FOURCC('M','P','4','2')等独有的编解码器代码。
  4. 点击电脑。
  5. 没有任何效果。任何帮助/方向将不胜感激..

2 个答案:

答案 0 :(得分:1)

VideoCapture cap;
VideoWriter videoWriter;

cap.open(0);
if (!cap.isOpened())
{
    printf("can not open camera or video file\n");
    return ;
}
string namemove("foo.AVI");
int fourCC = CV_FOURCC('M', 'J', 'P', 'G');
Size S = Size((int)cap.get(CAP_PROP_FRAME_WIDTH), (int)cap.get(CAP_PROP_FRAME_HEIGHT));
int fps = cap.get(CAP_PROP_FPS);
videoWriter.open(namemove, -1, cap.get(CAP_PROP_FPS), S, true);


if (!videoWriter.isOpened())
{
    cerr << "Cannot open output file " << endl;

    return ;
}

Mat img0;
namedWindow("image", WINDOW_NORMAL);

for (;;)
{
    cap >> img0;
    if (img0.empty())
        break;

    videoWriter << img0;

    imshow("image", img0);
    char k = (char)waitKey(30);
    if (k == 27) break;
}

答案 1 :(得分:0)

尝试 VideoWriter wrt; wrt.open("video.avi", -1, 29, Size(480, 640));