在 c++ 中出现 opencv 错误

Getting opencv error in c++

本文关键字:opencv 错误 c++      更新时间:2023-10-16

我试图得到opencv的错误!假设我有这个程序:

#include <opencv2corecore.hpp>
#include <opencv2highguihighgui.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 ......opencvmoduleshighguisrcwindow.cpp, line 261

我的问题是我如何才能收到此消息并将其保存在我收到的每个错误的字符串中!如果有可能逃脱程序崩溃!

提前感谢!

它使用C++例外。有关详细信息,请参阅文档中的此处。

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

OpenCV 代码中的CV_Assert是一个宏,它调用 OpenCV 函数error。该函数可以在此处看到。它将始终在 stderr 上打印错误文本,除非您没有设置customErrorCallback。您可以通过cvRedirectError执行此操作,请参阅此处。

您必须检查代码中的 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;
}