2015-03-03 5 views
1

Я совершенно новый в OpenCV, но теперь мне нужно поймать cv:Exception. Я сделал блок try и catch:OpenCV - отключить печать Исключения

try{ 
    //do some opencv things 
} 
catch (cv::Exception& e){ 
    cout << "OpenCV error: " << endl << e.what(); 
    cin.get(); 
} 

Он отлично работает, я могу поймать исключение. Но сообщение об исключениях написано дважды. Один из библиотек opencv и второй от меня.

Есть ли способ отключить отправку сообщения от opencv до stderr? Я выпустил версию релиза - измените VS2013, чтобы освободить и удалить «d» из имени всех библиотек. Но он все еще написан дважды.

ответ

3

Вы можете использовать cvRedirectError, чтобы переопределить обработку ошибок OpenCV по умолчанию.

Вы можете использовать его like this:

int myErrorHandler(int status, const char* func_name, const char* err_msg, 
        const char* file_name, int line, void*) 
{ 
    // Do whatever you want here 
    return 0; 
} 

cvRedirectError(myErrorHandler); ///< Call this once somewhere 

И это, как вы бы восстановить поведение по умолчанию:

cv::redirectError(cv::ErrorCallback()) 
Смежные вопросы