序言
因为在学习OpenCV的时候难免会遇到一些不知道原理只知道API时,因臆想导致的错误失败,故此文就用于记录
环境
Qt5.12 + OpenCV4.5.4
错误原因
OpenCV的VideoWriter,其设置的视频大小参数需要与放进去的帧大小一致,否则就会写不进去。
正确示例
VideoCapture cap = VideoCapture( "test.avi" );
int fourcc = VideoWriter::fourcc('X', 'V', 'I', 'D');
Size size( static_cast<int>(cap.get( CAP_PROP_FRAME_WIDTH)), static_cast<int>(cap.get( CAP_PROP_FRAME_HEIGHT )));
VideoWriter out = VideoWriter("output.avi", fourcc, 20.0, size, CAP_DSHOW);
...
Mat frame;
cap.read( frame );
out<< frame;
一般有两个方法,一个是在构造VideoWriter时就将读取的宽高写进去,第二种就是将即将写进去的帧改为自己想要的宽高再写进去。
注:本版本没有VideoWriter_fourcc,只有VideoWriter的fourcc静态函数。