【发布时间】:2020-12-07 01:58:05
【问题描述】:
我正在编写一个 C++ 程序来测试阅读 QRCode,这是我非常小的代码片段:
cv::Mat m = cv::imread("fail.png");
cv::QRCodeDetector d;
std::vector<cv::Point> ps;
d.detect(m, ps);
if (ps.size() > 0) {
std::cout << d.decode(m, ps) << std::endl;
}
我尝试使用下图对其进行测试:
我在 d.decode() 上遇到了异常,有人知道避免这种情况吗?
环境: Visual Studio 2015,Opencv 4.0.0
【问题讨论】:
-
什么你遇到了异常?我还建议将您的 OpenCV 更新到最新版本。 4.0.0 已经两年了,从那时起已经有很多错误修复和改进。
-
barcode-main.exe 中 0x00007FF86152ED29 (ntdll.dll) 处未处理的异常:0xC0000374:堆已损坏(参数:0x00007FF8615987F0)。稍后将尝试更新opencv。
-
在opencv 4.5.0版本上可以,但是需要使用detectAndDecode()来检测二维码,并且在detect()之后使用decode()返回一个空字符串
-
不知道发生了什么。无法重现。据我所知,这应该可以工作。这在我的旧 4.1.1 设置上工作得很好(在 python 中,但那是一样的)。
points向我展示了四个角。解码给了我字符串WeCanOverCome.和代码位矩阵。尝试使用Mat而不是vector。也许它为此感到困扰。 -
不知道为什么,但无论如何感谢 Christoph。