利用CvVideoWriter和cvWriteFrame函数合成视频

 最近要处理一个停车场的视频数据,但是拿不到各种状态的停车场图片,所以就PS各种图片然后和已有视频图像进行组合。所以就写了下面这段代码。
 先介绍一下CvVideoWriter和cvWriteFrame函数:

CvVideoWriter* cvCreateVideoWriter ( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 );

filename 输出视频文件名。

fourcc为 四个字符用来表示压缩帧的codec
fps 被创建视频流的帧率。

frame_size 视频流的大小。

is_color 如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)。

int cvWriteFrame( CvVideoWriter* writer, const IplImage* image );

writer

视频写入器结构。

image

被写入的帧。

函数cvWriteFrame写入/附加到视频文件一帧。

#include "opencv\cv.h"
#include "opencv\cxcore.h"
#include "opencv\highgui.h"


using namespace cv;
using namespace std;

int main() {  

    IplImage *Imgin = cvLoadImage("1.jpg", 1);  //读取图片

    CvVideoWriter* video = cvCreateVideoWriter("2.avi",   CV_FOURCC('P', 'I', 'M', '1'), 20,   cvSize(Imgin->width, Imgin->height), 1);  //创建新视频

    CvCapture *cap;  
    cap = cvCreateFileCapture("1.avi");  
    IplImage *imgVideo ;  
  //在新视频前插入图片
    int i;  
    for (int x = 0; x < 50; x++) {  
        i = cvWriteFrame(video, Imgin);  
    } 
    //插入视频
    int q ;  
    while (imgVideo = cvQueryFrame(cap)) {  
        q = cvWriteFrame(video, imgVideo);  
    }  

    if (video) {  
        cvReleaseVideoWriter(&video);  
        cvReleaseImage(&imgVideo);  
        cvReleaseImage(&imgVideo);  
        cvReleaseImage(&Imgin);  
    }  

    return 0;  
}  
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值