我已经使用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/