2014-02-11 2 views
1

웹캠과 IpCamera를 사용하여 비디오를 표시하는 응용 프로그램을 개발 중입니다. IpCamera의 경우 동영상 스트림을 표시하지만 언젠가는 스트리밍을 중지하고 응용 프로그램이 멈 춥니 다.IP 카메라로 연결 한 후 C# - 응용 프로그램이 중단됩니다.

나는 프레임을 잡고 그림 컨트롤에 표시하기 위해 Emgu.CV Library을 사용하고 있습니다.

나는 QueryFrame() 함수를 사용하여 비디오 디스플레이 코드를 시도했다. QueryFrame()null 값 어플리케이션 중단을 제공 잠시 후 잡아 프레임 Image<Bgr, Byte> ImageFrame = capture.QueryFrame();

대한 IP 카메라 Capture capture = new Capture(URL);

를 접속

.

왜 이런 일이 일어나고 어떻게 처리 할 수 ​​있는지 말해 줄 수 있습니까?

미리 감사드립니다.

+0

을 ProcessFrame() 메소드를 대체 할 그러나하면 어떻게 때 응용 프로그램이 중단을보고 오류? 귀하의 코드라면, 더 자세한 정보를 제공 할 수있는 스택 추적이 있습니까? – txtechhelp

+0

질문을 편집했습니다. 그러나 지금까지 오류가 표시되지 않았습니다. –

+0

if (ImageFrame! = null) 문을 사용하는 경우 ImageFrame을 사용하여 이미지를 처리하고 싶습니까? 그렇지 않으면 try {} catch (nullExc eption ex) {}가 문제를 해결할 수 있지만 가능한 경우 문제를 해결하도록 조언합니다. 건배 – Chris

답변

2

지연에 대해 유감이지만 몇 가지 공용 IP 카메라에서 작동하는 예제를 제공합니다. 현재 버전으로 대체되는 EMGU 참조가 필요하며 대상 빌드 디렉토리는 "EMGU Version \ bin"으로 설정되어야하며, 그렇지 않으면 examples 폴더로 추출하십시오.

http://sourceforge.net/projects/emguexample/files/Capture/CameraCapture%20Public%20IP.zip/download

오히려 이전 QueryFrame() 메소드를 사용하는 것보다 그것의 RetrieveBgrFrame() 방법을 사용한다. 합리적으로 잘 작동했으며 널 예외도 없었습니다. 당신은

private void ProcessFrame(object sender, EventArgs arg) 
{ 
    //If you want to access the image data the use the following method call 
    //Image<Bgr, Byte> frame = new Image<Bgr,byte>(_capture.RetrieveBgrFrame().ToBitmap()); 

    if (RetrieveBgrFrame.Checked) 
    { 
     Image<Bgr, Byte> frame = _capture.RetrieveBgrFrame(); 
     //because we are using an autosize picturebox we need to do a thread safe update 
     if(frame!=null) DisplayImage(frame.ToBitmap()); 
    } 
    else if (RetrieveGrayFrame.Checked) 
    { 
     Image<Gray, Byte> frame = _capture.RetrieveGrayFrame(); 
     //because we are using an autosize picturebox we need to do a thread safe update 
     if (frame != null) DisplayImage(frame.ToBitmap()); 
    } 
} 

건배 이런 일에

크리스

+0

답변 해 주셔서 고맙겠 습니다만,'_capture = new Capture (URL)'에'System.TypeInitializationException 처리되지 않았습니다. 처리되지 않았습니다. Emblem.CV.Dll' –

+0

죄송합니다. x64 시스템 용 라이브러리는 x86 라이브러리로 교체하십시오. 사용중인 EMGU 버전과 이에 따라 프로젝트의 플랫폼 타겟이 적절하게 설정되었는지 확인하십시오. – Chris

관련 문제