藏于俗常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日

悬赏问题

  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上