#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;
}
生成解决方案成功但运行不了,之前执行过导出视频文件和调用摄像头的程序都可以运行。
属性配置
报错
应该是读取字符串时越界了,你代码里用argv[1],argv[2]说明命令行输入参数至少需要三个,少了就报错。你可以改成argv[0],argv[1],这样命令行输入两个参数就行了
有变量值为空指针,在xstring文件。在报错窗口中点击”重试“,然后看一下崩溃点的堆栈,定位到你写的代码行,看看是哪一行出的问题
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!