做这个代码时只在保存转化后的视频时出现了问题,就是保存的avi文件打不开,并且大小很小(所以我怀疑没有写进去)
导致出错的代码
VideoWriter writer("qinshi3.avi", CV_FOURCC('X', 'V', 'I', 'D'), FrameRate, Size(frameWidth, frameHeight));
我怀疑初始化那里没有打开文件,所以没写进去,后来参考了网上的代码,修改如下
writer.open("qinshi3.avi", -1, FrameRate, Size(frameWidth, frameHeight), true);//打开视频文件,准备写入
第一个当然也没有错,但是在此处是不行的,在剪切原视频时它是可以用的。
代码1:用opencv打开一个视频并加特效(灰度转换、高斯滤波、canny边缘检测处理)再保存边缘检测视频
#include <opencv2\opencv.hpp>
#include <cstdio>
using namespace cv;
int main()
{
//【1】读入视频
VideoCapture capture("C:\\Users\\小碗豆\\Downloads\\qinshi2.avi");
string outFlie = "C:\\Users\\小碗豆\\Downloads\\qinshi3.avi";
VideoWriter writer;
// 获取视频相关信息-帧像素宽高
int frameHeight =(int)capture.get(CV_CAP_PROP_FRAME_HEIGHT);
int frameWidth = (int)capture.get(CV_CAP_PROP_FRAME_WIDTH);
double FrameRate = capture.get(CV_CAP_PROP_FPS);
//VideoWriter writer("C:\\Users\\小碗豆\\Downloads\\qinshi3.avi", CV_FOURCC('X', 'V', 'I', 'D'), FrameRate, Size(frameWidth, frameHeight));//注意此处视频的尺寸大小要与真实的一致 &