您正在使用
double Width = cap_cam1.get(CV_CAP_PROP_FRAME_WIDTH);
double Height = cap_cam1.get(CV_CAP_PROP_FRAME_HEIGHT);
cv::Size frameSize(static_cast<int>(Width), static_cast<int>(Height));
VideoWriter cam1_write(videoFileName, CV_FOURCC('D', 'I', 'V', '3'), 10.0, frameSize, true);
这意味着您要使用 VideoCapture 图像大小编写视频。
这里你必须更改为
cv::Size targetSize = cv::Size(320,240);
VideoWriter cam1_write(videoFileName, CV_FOURCC('D', 'I', 'V', '3'), 10.0, targetSize, true);
现在在你的循环中使用
resize(image, image, targetSize);
这意味着您必须在创建 VideoWriter 时决定想要什么样的输出图像尺寸。这是因为典型的编解码器假定图像分辨率恒定(已知)。
对于设置分辨率,您有一些拼写错误:
cap_cam1.set(CV_CAP_PROP_FRAME_WIDTH, 240);
cap_cam1.set(CAP_PROP_FRAME_HEIGHT,320);
这意味着决议cv::Size(240,320)
,所以如果您将那里的顺序更改为,您的代码可能会起作用cv::Size(320,240)
。请参阅@MBo 的评论