gpt4 book ai didi

c++ - 从 imshow() 和 namedWindow() 捕获 opencv 异常

转载 作者:太空宇宙 更新时间:2023-11-03 23:16:20 24 4
gpt4 key购买 nike

我有一些代码没有按预期工作。我有一个使用 imshow() 来显示图像的应用程序,但我也希望该程序在没有显示的情况下仍然可以工作。出于这个原因,我试图从 imshow 中捕获异常(GTK-警告:无法打开显示)并在没有它的情况下继续程序(在每次 imshow() 调用时检查 bool 'display')。

//Display
bool display{false};
try{
std::cout << "Attempting to open display..." << std::endl;
cv::resize(image,modimage1,cv::Size(800,480));
cv::namedWindow("Output", CV_WINDOW_NORMAL);
cv::setWindowProperty("Output", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLS$
cv::imshow("Output", modimage1);
cv::waitKey(1);
display = true;
} catch( cv::Exception& e ){
const char* err_msg = e.what();
std::cout << "exception caught:" << err_msg << std::endl;
std::cout << "Failed to launch display, running without visual..." << s$
}

catch block 是从 opencv 文档中直接复制的,所以我很惊讶它没有捕获异常。该程序的行为与没有 try block 时完全一样。最后的输出是“尝试打开显示”,然后我收到“GTK-Warning”并退出程序。

那么,缺少什么?我是否捕获了错误的错误类型?异常实际上不是 openCV 抛出的,而是 GTK/X/抛出的?

谢谢

最佳答案

我不认为这些是对奇怪的 cv::Exception 行为的完整解释。

try {
cap = new cv::VideoCapture(<file_name>);
} catch(cv::Exception& ex) {
cerr << "opencv exception." << endl;
}

如果找不到文件,则永远不会显示我的消息,但会显示以下内容:

[ERROR:0] global/data/data/com.termux/files/home/opencv4/opencv/modules/videoio/src/cap.cpp (142) 打开 VIDEOIO(CV_IMAGES):引发 OpenCV 异常:

OpenCV(4.3.0-pre)/data/data/com.termux/files/home/opencv4/opencv/modules/videoio/src/cap_images.cpp:253: error: (-5:Bad argument) CAP_IMAGES : 找不到起始编号(在文件名中):函数“icvExtractPattern”中的文件名

这与 X 服务器无关。

关于c++ - 从 imshow() 和 namedWindow() 捕获 opencv 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38802920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com