我已经使用yocto项目安装了opencv 2.4.9。

VideoWriter video("out.avi",CV_FOURCC('M','J','P','G'),30,
  Size(frame_width,frame_height));

没有创建out.avi文件。

这是代码:

int main()
{
  cv::VideoCapture capture(0);

  int frame_width = capture.get(CV_CAP_PROP_FRAME_WIDTH);
  int frame_height = capture.get(CV_CAP_PROP_FRAME_HEIGHT);

  VideoWriter video("out.avi", CV_FOURCC('M','J','P','G'), 30,
    Size(frame_width,frame_height));

  if (!capture.isOpened())
  {
    printf("Error in open\n");
  }

  cv::Mat frame;

  while(1)
  {
    if (!capture.read(frame))
    {
      printf("Error in capture\n");
    }
    video.write(frame);

    cv::waitKey(30);
  }
}

但是相同的代码也可以在x86 linux上运行。

最佳答案

如果代码可以在Linux上运行,则该错误可能是由于Windows计算机上没有可用的MJPG编解码器。
一种简单的测试方法是用-1替换CV_FOURCC('M','J','P','G'),以便您的程序将要求您从列表中选择编解码器。

除此之外,我建议您在while循环后添加video.release();。有时,当VideoWriter实例发布不佳时,将创建视频,但您将无法使用VLC或任何其他媒体播放器读取视频。

关于opencv - OpenCV 2.4.9 VideoWriter无法在目标上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47547249/

10-12 03:26