藏于俗常87 2022-03-21 14:40 采纳率: 100%
浏览 58
已结题

调用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

  • 写回答

3条回答 默认 最新

  • 源客V 2022-03-21 17:58
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月12日
  • 已采纳回答 6月4日
  • 创建了问题 3月21日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度