使用openCV进行视频拼接
来源:互联网 发布:食品安全软件 编辑:程序博客网 时间:2024/05/19 16:06
最近实验室需要做个Demo,要把两个视频拼到一个窗口里面进行播放。于是写了个使用ROI来实现两个视频拼接到一起的代码,但是该代码的前提是两个视频的帧数、宽高都一样。
#include "stdafx.h"#include<cv.h>#include<highgui.h>int _tmain(int argc, _TCHAR* argv[]){IplImage *newFrame=NULL;IplImage *frame1=NULL;IplImage *frame2=NULL;CvCapture * pCapture1 = cvCaptureFromAVI(argv[1]);CvCapture * pCapture2 = cvCaptureFromAVI(argv[2]);CvRect rect;CvVideoWriter *pWriter=NULL;//get the frame number of two videosint frameNo1 = (int) cvGetCaptureProperty(pCapture1, CV_CAP_PROP_FRAME_COUNT);int frameNo2 = (int) cvGetCaptureProperty(pCapture2, CV_CAP_PROP_FRAME_COUNT);if(frameNo1!=frameNo2)printf("video length 1 != video length 2\n");elseprintf("Total frame numbers: %d\n",frameNo1);//get the frame width of two videosint frameWidth1 = (int) cvGetCaptureProperty(pCapture1, CV_CAP_PROP_FRAME_WIDTH);int frameWidth2 = (int) cvGetCaptureProperty(pCapture2, CV_CAP_PROP_FRAME_WIDTH);if(frameWidth1!=frameWidth2)printf("video width 1 != video width 2\n");elseprintf("frame width: %d\n",frameWidth1);//get the frame height of two videosint frameHeight1 = (int) cvGetCaptureProperty(pCapture1, CV_CAP_PROP_FRAME_HEIGHT );int frameHeight2 = (int) cvGetCaptureProperty(pCapture2, CV_CAP_PROP_FRAME_HEIGHT );if(frameHeight1!=frameHeight2)printf("video height 1 != video height 2\n");elseprintf("frame height: %d\n",frameHeight1);//get the video fpsint fps1 = (int) cvGetCaptureProperty(pCapture1, CV_CAP_PROP_FPS );int fps2 = (int) cvGetCaptureProperty(pCapture2, CV_CAP_PROP_FPS );if(fps1!=fps2)printf("video fps 1 != video fps 2\n");elseprintf("frame fps: %d\n",fps1);int initFlag=0;int counter=0;while((frame1=cvQueryFrame(pCapture1))!=NULL && (frame2=cvQueryFrame(pCapture2))!=NULL ){printf("%d\n",counter++);if(initFlag==0){newFrame = cvCreateImage(cvSize(frame1->width*2,frame1->height),frame1->depth,frame1->nChannels);pWriter = cvCreateVideoWriter("re.avi",CV_FOURCC('X','V','I','D'),fps1,cvSize(frame1->width*2,frame1->height),1);initFlag=1;}rect.x=0;rect.y=0;rect.height=frameHeight1;rect.width=frameWidth1;//use ROI to implement the video split jointcvSetImageROI(newFrame,rect);cvCopyImage(frame1,newFrame);cvResetImageROI(newFrame);rect.x=frameWidth1;rect.y=0;rect.height=frameHeight1;rect.width=frameWidth1;cvSetImageROI(newFrame,rect);cvCopyImage(frame2,newFrame);cvResetImageROI(newFrame);cvWriteFrame(pWriter,newFrame);}cvReleaseImage(&frame1);cvReleaseImage(&frame2);cvReleaseImage(&newFrame);return 0;}
- 使用openCV进行视频拼接
- OpenCV进行视频拼接
- 使用opencv把图片拼接成视频
- 使用OpenCV进行视频读写
- 使用OpenCV进行视频读写
- 如何使用Autopano Video Pro进行全景视频拼接?
- OpenCV:使用VideoCapture类进行读取视频
- 全景视频拼接(二)--OpenCV源码解析
- opencv实现两个视频拼接显示
- opencv调用电脑摄像头+视频拼接
- opencv进行相同图片块的拼接
- zedboard中使用opencv对视频进行处理
- 使用opencv进行多路视频的播放
- OpenCV:使用VideoCapture类进行视频读取和显示
- OpenCV:使用VideoCapture类进行视频读取和显示
- 使用opencv进行多路视频的播放
- OpenCV:使用VideoCapture类进行视频读取和显示-Mat
- OpenCV:使用VideoCapture类进行视频读取和显示
- 生命的产生和消失,梦想与现实
- 关于activity launchMode设置为singleTop时,不会调用OnNewIntent的问题
- SQL Server做完整备份步骤
- Activity的生命周期
- Eclipse Helios(3.6.2)下载地址
- 使用openCV进行视频拼接
- 地图中添加大头针
- 利用数据库存储过程来实现分页功能
- 汉字字符集
- IIS ERROR about SP:The process can't access the file because it is being used by another process
- k-means的简化版本
- [NSFileManager defaultManager] 与 [[NSFileManager alloc] init] 返回的实例区别
- how to know the package name of android apk?
- 设计模式