2014-07-13 4 views
1

비디오를 출력으로 가져 오기 위해 여러 프레임을 병합하려고합니다.프레임 코드 병합이 opencv에서 출력을 제공하지 않습니다.

내 코드 :

double fps = 20; 
IplImage *image; 
CvSize size = cvSize(320,240); 

image = cvLoadImage("image1.jpg",1); 
CvVideoWriter *writer = cvCreateVideoWriter("Video from Images.mpeg",CV_FOURCC('M','P','E','G'),fps,size); 
for(int counter=0;counter < 376;counter++) 
{ 
    cvWriteFrame(writer, image); 
} 
image = cvLoadImage("imag2.jpg",1); 

for(int counter=0;counter < 376;counter++) 
{ 
    cvWriteFrame(writer,image); 
} 

cvWaitKey(0); /*wait till a key is pressed..*/ 
cvReleaseVideoWriter(&writer); 
cvReleaseImage(&image); 
} 

결과 비디오는 빈 파일이고 나는 그것을 열 수 없습니다. 여기서 내가 뭘 잘못 했니? 코드에 따르면

+0

열기'{'...보다 더 많은 문이 열려 있습니다. – mafso

+0

오 !! 불행히도 그것은 해결책이 아닙니다. 여기에서 저에게 일어난 실수를 지적 해 주셔서 감사합니다. – justcode

답변

0

는 몇 가지 잘못 갈 수 :

  • 모든 cvLoadImage() 통화

    이 실패하고 입력 이미지를로드하지 않은 수있다;
  • 로드 된 이미지가 320x240이 아닌 경우 문제가 발생합니다.
  • cvCreateVideoWriter() 실패했을 수 있습니다.
  • 첫 번째 이미지와 두 번째 이미지의 크기가 다른 경우 다른 문제입니다.

코드를 안전하게 수정하려면! 항상 전화가 왔는지 확인하십시오 (코드는 테스트되지 않았습니다).

IplImage* image = cvLoadImage("image1.jpg",1); 
if (!image) { 
    printf("!!! Failed cvLoadImage #1"); 
    return; 
} 

IplImage* image2 = cvLoadImage("imag2.jpg",1); 
if (!image2) { 
    printf("!!! Failed cvLoadImage #2"); 
    return; 
} 

if (image->width != image2->width || 
    image->height != image2->height) { 
    printf("!!! Images have different sizes!"); 
    return; 
} 

CvSize size; 
size.width = image->width; 
size.height= image->height; 

double fps = 20; 
CvVideoWriter *writer = cvCreateVideoWriter("Video from Images.mpeg", CV_FOURCC('M','P','E','G'), fps, size); 
if (!writer) { 
    printf("!!! Failed cvCreateVideoWriter"); 
    return; 
} 

for(int counter=0;counter < 376;counter++) 
{ 
    cvWriteFrame(writer, image); 
} 

for(int counter=0;counter < 376;counter++) 
{ 
    cvWriteFrame(writer,image2); 
} 

cvReleaseVideoWriter(&writer); 
cvReleaseImage(&image); 
cvReleaseImage(&image2); 
+0

감사합니다. 그것은 정말로 도움이되었습니다 ... – justcode

+0

사실 나는 어떤 대답을 upvoting에 대한 atleast 15 평판이 필요합니다. 미안해 !!! – justcode

관련 문제