捕获OpenCV异常

时间:2017-07-20 17:57:08

标签: c++ opencv

我正在使用OpenCV warpAffine功能。但由于某种原因,它有时失败(大约1/10尝试)。我想看到抛出的实际异常,但出于某种原因,我无法抓住它。我的try-catch块有问题吗?:

//...
cout << "pos 1" << endl;
try
{
    cout << "pos 2" << endl;

    cv::warpAffine(rawImage, transformed, t, size, INTER_LINEAR, BORDER_CONSTANT);

    cout << "pos 3" << endl;
}
catch (const std::exception& e1)
{
    cerr << e1.what() << endl;
}
catch (const cv::Exception& e2) {
    cerr << e2.what() << endl;

}

即使我只有一个catch块,它也没有遇到它。控制台总是(在它不工作的情况下)出现以下错误:

enter image description here

所以我不是真正关注warpAffine的问题,更多关于此刻的尝试问题。

1 个答案:

答案 0 :(得分:1)

这是一个过时的话题,但我想我从自己的经历中知道答案。 cv :: Exception继承自std :: exception。您需要将cv :: Exception捕获移到std :: exception之前,像这样:

try {
...
} catch(const cv::Exception& ex) {
...
} catch(const std::exception& ex) {
...
} catch(...) { //everything else
}