调用OpenCV函数resize(),缩放视频文件的尺寸

#include <opencv2/opencv.hpp>

#include <iostream//(这里应该还有个>符号 不知道为什么打出来这个词就会消失)
using namespace cv;
using namespace std;
int main(int argc, char **argv) {

//打开视频文件
//VideoCapture capture("C:/dvp/dataset/abc.mp4");
VideoCapture capture(argv[1]);
VideoWriter writer(argv[2],
    VideoWriter::fourcc('D', 'I', 'V', 'X'),
    30, Size(300, 200),
    true);

//isOpen判断视频是否打开成功
if (!capture.isOpened())
{
    cerr << "Movie open Error";
    return -1;
}
if (!writer.isOpened()) {
    cerr << "Could not open the output video file for write\n";
    return -1;
}
//获取视频帧频
double rate = capture.get(CAP_PROP_FPS);
cout << "帧率为:" << " " << rate << endl;
cout << "总帧数为:" << " " << capture.get(CAP_PROP_FRAME_COUNT) << endl;//输出帧总数
Mat frame_src, frame_dst;

double position = 0.0;
//设置播放到哪一帧,这里设置为第0帧
capture.set(CAP_PROP_POS_FRAMES, position);

while (1)
{
    //读取视频帧
    if (!capture.read(frame_src))
        break;
    resize(frame_src, frame_dst, Size(300, 200), 0, 0, INTER_LINEAR);
    writer.write(frame_dst);
}
capture.release();
writer.release();
return 0;

}

生成解决方案成功但运行不了,之前执行过导出视频文件和调用摄像头的程序都可以运行。
属性配置

img

报错

img

应该是读取字符串时越界了,你代码里用argv[1],argv[2]说明命令行输入参数至少需要三个,少了就报错。你可以改成argv[0],argv[1],这样命令行输入两个参数就行了

有变量值为空指针,在xstring文件。在报错窗口中点击”重试“,然后看一下崩溃点的堆栈,定位到你写的代码行,看看是哪一行出的问题

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632