2013-10-21 2 views
4

opencv 오류가 발생했습니다! 나는이 프로그램을 가지고 말 :C++에서 opencv 오류가 발생했습니다.

#include <opencv2\core\core.hpp> 
#include <opencv2\highgui\highgui.hpp> 

int main(){ 
    cv::Mat frame; 
    cv::VideoCapture cap(1); // I don't have a second videoinput device! 
    int key = 0; 

    while(key !=27){ 
     cap >> frame; 
     cv::imshow("frame",frame); 
     key = cv::waitKey(10); 
    } 

    cap.release(); 
    return 0; 
} 

나는 콘솔에서이 메시지를 얻을이 프로그램을 실행할 때 :이 메시지가 모든에 대한 문자열을 절약 할 수있는 방법

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in unknown functi 
on, file ..\..\..\opencv\modules\highgui\src\window.cpp, line 261 

내 질문입니다 내가 얻는 오류! 그리고 프로그램 충돌을 피할 수 있다면!

미리 감사드립니다.

답변

11

C++ 예외를 사용합니다. 자세한 내용은 문서의 here을 참조하십시오.


OpenCV의 코드에서 CV_Assert에게

try 
{ 
    ... // call OpenCV 
} 
catch(cv::Exception& e) 
{ 
    const char* err_msg = e.what(); 
    std::cout << "exception caught: " << err_msg << std::endl; 
} 

는 OpenCV의 함수를 호출 error 매크로이다. 그 기능은 here으로 볼 수 있습니다. customErrorCallback 세트가 없으면 항상 stderr에 오류 텍스트를 인쇄합니다. 너는 cvRedirectError을 통해 이것을한다, here을 보아라.

+0

답장을 보내 주셔서 감사합니다. 그것은 작동, 어쨌든 오류 메시지의 출력을 사용하지 않도록 설정되어 있습니까? – Engine

+0

그냥'std :: cout'을 제거 하시겠습니까? 대신 파일 안에 넣을 수 있습니다. – Albert

+0

아니요 작동하지 않습니다. 프레임이 NULL 값을 가리키고 있기 때문에 출력은 cv :: imshow()에서 발생합니다. – Engine

0

코드에서 OpenCV 함수 호출이 성공적으로 실행되었는지 여부를 확인해야합니다. 그러면 정확한 문제를 이해할 수 있습니다. 다음은 수정 된 코드입니다.

int main(){ 
    cv::Mat frame; 
    cv::VideoCapture cap(1); // I don't have a second videoinput device! 

    if (!cap.isOpened()) // if not success, exit program 
    { 
     cout << "Cannot open the video cam" << endl; 
     return -1; 
    } 

    int key = 0; 

    while(key !=27){ 
     bool bSuccess = cap.read(frame); // read a new frame from video 

     if (!bSuccess) //if not success, break loop 
     { 
      cout << "Cannot read the frame from video cam" << endl; 
      break; 
     } 
     cv::imshow("frame",frame); 
     key = cv::waitKey(10); 
    } 

    cap.release(); 
    return 0; 
} 
+0

문제는 프로그램이 실행되고 있지 않지만 opencv 오류 메시지를 저장하는 방법이 있습니다. – Engine

관련 문제