前几天需要把视频剪成5秒5秒的小段,手动剪显然太不靠谱,就写了个剪视屏的小程序。
先上程序:
#include "opencv.hpp"
#include "iostream"
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
VideoCapture cap; // 用于打开视频的类
VideoWriter writer; //用于写视频的类
Mat frame; // 暂存视频帧图像
char c = NULL;
string name1="E:\\1\\test.avi"; //原视频路径
string name2="E:\\1\\1.avi"; //视频保存路径
string tmp;
stringstream sstr; //string流,用于把int转为string
cap.open(name1); //打开原视频
int i=0,j=0;
while(cap.isOpened()) //循环到视频最后一帧
{
if(i%145==0) //每145帧存一个视频
{
j=i/145; //新视频名,用数字命名
sstr.str(""); //清空string流,不能用clear()
sstr << j; //int读入sstr
tmp=sstr.str(); //.str()将int转为string
name2="E:\\1\\"+tmp+".avi"; //新视频保存的完整路径
wr