我是使用OpenCV 3和Visual Studio。问题在于我无法保存除默认全摄像头分辨率之外的任何特定分辨率的视频。没有错误,但视频文件大小不增长,保持在5.54kb。
以下是我的代码:
如果我删除
以下是我的代码:
#include"opencv2\opencv.hpp"
using namespace cv;
using namespace std;
VideoCapture cap_cam1(0);
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));
string videoFileName = "D://current.avi";
VideoWriter cam1_write(videoFileName, CV_FOURCC('D', 'I', 'V', '3'), 10.0, frameSize, true);
Mat image;
int main()
{
while (true)
{
cap_cam1 >> image;
resize(image, image, Size(320, 240));
imshow("image", image);
cam1_write.write(image);
if (waitKey(33) == 27)break;
}
}
如果我删除
resize
函数,文件大小就会增加并添加帧数。
我还尝试在VideoWriter
定义后添加以下行:cap_cam1.set(CV_CAP_PROP_FRAME_WIDTH, 240);
cap_cam1.set(CAP_PROP_FRAME_HEIGHT,320);
我也尝试在VideoWriter
的定义中更改分辨率,但文件大小仍为5.54kb。
如何在自定义分辨率下录制视频?
VideoWriter cam1_write(videoFileName, CV_FOURCC('D', 'I', 'V', '3'), 10.0, cv::Size(320,240), true);
来替代VideoWriter cam1_write(videoFileName, CV_FOURCC('D', 'I', 'V', '3'), 10.0, frameSize, true);
在那里使用目标大小(你要调整的大小)... VideoWriter只允许写入一个目标大小。 - Micka