2013-03-09 2 views
1

안녕하세요,이 코드를 실행하려고하지만 그것을 나에게 분할 오류를주고 있어요. 4 초의 IP 카메라 피드를 로컬에서 avi로 저장하여 추가 처리를하고 싶습니다. 간접적 인 방법으로 가야하므로 직접 피드에 액세스 할 수없는 것 같습니다.JPG에서 avi 파일 만들기 opencv

#include "cv.h" 
#include "highgui.h" 
#include<iostream> 
using namespace std; 

int main() 
{ 
    IplImage *img; 
    CvSize size; 

    img = cvLoadImage(" http://192.168.1.4:1024/shot.jpg"); 
    size.width=img->width; 
    size.height = img->height; 

    CvVideoWriter *writer = cvCreateVideoWriter(
     "out.avi", 
     CV_FOURCC('P','I','M','1') , 
     30, 
     size, 
     TRUE 
    ); 
    if(writer ==NULL) 
    { 
     cout<<"No videowrite here !!!!"<<endl; 
    } 

    while(img!= NULL) 
    { 
     img = cvLoadImage("http://local_ip:1024/shot.jpg"); 
     cvWriteFrame(writer,img); 
    } 

    cvReleaseVideoWriter(&writer); 
    cvReleaseImage(&img); 

    return 0; 
} 
+0

아마도 img = cvLoadImage ("http : // local_ip : 1024/shot.jpg"); 다음에'if (img! = NULL)'을 체크해야 할 것입니다 'while (img! = NULL)' – borisbn

답변

0

첫 번째 대답은 분명 도움이됩니다. 그러나 여기에 더 많은 문제가 있습니다. 어느 시점에서 NULL img로 cvReleaseImage(&img);으로 갈 것입니다! 또한 현재 문제가 아니지만 cvReleaseVideoWriter(&writer); 인 경우 writer == NULL 인 경우에도 확인해야합니다. 이것은 이제 올바르게 처리되지 않습니다 ...