/************************************************************************/
/*@file
Copyright (C) 2015 LeafLiu
@version 2015-3-27 20:28:44
*/
/************************************************************************/
#include<opencv/cv.h>
#include<opencv/highgui.h>
#include<iostream>
#define LOG printf
int main()
{
char* Lfilename = "C:\\Users\\leaf\\Desktop\\汇报2015-3-16\\VS_block_res_no_shift_no_fusion_affine~1.avi"/*argv[1]*/;
char* Rfilename = "C:\\Users\\leaf\\Desktop\\汇报2015-3-16\\VS_block_result_SURF.avi";
CvCapture* pLcapture = NULL;
CvCapture* pRcapture= NULL;
if( !(pLcapture = cvCaptureFromAVI(Lfilename)))
{
LOG("error load left file\n");
return 0;
}
if( !(pRcapture = cvCaptureFromAVI(Rfilename)))
{
LOG("error load right file\n");
return 0;
}
int LframeH = (int) cvGetCaptureProperty(pLcapture, CV_CAP_PROP_FRAME_HEIGHT);
int LframeW = (int) cvGetCaptureProperty(pLcapture, CV_CAP_PROP_FRAME_WIDTH);
int RframeH = (int) cvGetCaptureProperty(pRcapture, CV_CAP_PROP_FRAME_HEIGHT);
int RframeW = (int) cvGetCaptureProperty(pRcapture, CV_CAP_PROP_FRAME_WIDTH);
if( LframeH!=RframeH||LframeW!=RframeW)
{
LOG("error-different video size\n");
return 0;
}
int border = 20;
CvVideoWriter *pWriter_join= cvCreateVideoWriter("VS4_join.avi",CV_FOURCC('X','V','I','D'),20,cvSize(LframeW*2+border,LframeH),1);
IplImage* pLcurframe,*pRcurframe;
bool bRun = true;
int idx=0;
while((pLcurframe = cvQueryFrame(pLcapture)) && (pRcurframe =cvQueryFrame(pRcapture))&& bRun)
{
IplImage *imgJoin=cvCreateImage(cvSize(LframeW*2+border,LframeH),IPL_DEPTH_8U,3);
cvSetImageROI(imgJoin,cvRect(0,0,LframeW,LframeH));
cvCopy(pLcurframe,imgJoin);
cvSetImageROI(imgJoin,cvRect(LframeW+border,0,LframeW,LframeH));
cvCopy(pRcurframe,imgJoin);
cvWriteFrame(pWriter_join,imgJoin);
cvReleaseImage(&imgJoin);
int k = cvWaitKey(30);
switch((char)k)
{
case 'q':
bRun = false;
break;
}
idx++;
printf("%d\n",idx);
}
cvReleaseVideoWriter(&pWriter_join);
return 0;
}