#include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp> using namespace std; using namespace cv; #include <opencv2/wechat_qrcode.hpp> int main() { const std::string modelDir = R"(D:\opencv\opencv4.5.4\build_contrib\downloads\wechat_qrcode\)"; // 构造(使用异常捕获构造函数是否正常) wechat_qrcode::WeChatQRCode detector{ modelDir + "detect.prototxt", modelDir + "detect.caffemodel", modelDir + "sr.prototxt", modelDir + "sr.caffemodel" }; // 临时变量 Mat img; vector<Mat> points; // qrcode: Retangle, not RotatedBox auto camIdx = 0; // auto camIdx = R"(C:\Users\wanggao\Desktop\qrconde_test.jpg)"; VideoCapture cap(camIdx); while(cap.read(img)){ // 检测 auto res = detector->detectAndDecode(img, points); // 结果叠加 for(size_t idx = 0; idx < res.size(); idx ++){ Point pt1 = points[idx].at<Point2f>(0); Point pt2 = points[idx].at<Point2f>(2); Rect rect{pt1, pt2}; Point center = (pt1 + pt2) / 2; // 绘制矩形框 rectangle(img, rect, {0,0,255}, 2); circle(img, center, rect.height / 15, {0,0,255}, -1); // 解码字符串 putText(img, res[idx], {pt1.x, pt2.y + 16}, 1, 1, {0,0,255}); } imshow("image", img); if (waitKey(30) >= 0) break; } return 0; } 如何捕获 detector->detectAndDecode产生的异常?
时间: 2024-04-05 09:29:58 浏览: 331
opencv2遍历图像显示RGB分量
4星 · 用户满意度95%
可以使用 try-catch 语句来捕获 detector->detectAndDecode 方法可能产生的异常。示例代码如下:
try {
auto res = detector->detectAndDecode(img, points);
// 处理正常情况下的返回值
} catch (const std::exception& e) {
std::cerr << "Exception caught: " << e.what() << std::endl;
// 处理异常情况下的错误信息
}
其中,std::exception 是 C++ 标准库中的异常类,可以用来捕获各种可能的异常。在 catch 子句中可以通过 e.what() 方法获取到异常的错误信息。
阅读全文