我用OpenCV编写了一个简单的QrCode检测和解码代码。
但是我面临的问题是QR码被检测到,但无法通过以下图像进行解码(请参见底部)。
我编写的代码如下所示:
int main(int argc, char* argv[])
{
cv::Mat src = imread("scaled.png");
if(src.empty())
{
cout << "can not open " << "Picture" << endl;
return -1;
}
QRCodeDetector qrDecoder = QRCodeDetector();
std::string data;
data = qrDecoder.detectAndDecode(src);
if(data.length()>0)
{
cout << "data: " << data; //data should be STOP
}
return 0;
}
有人知道为什么可以检测到QR码但不能将其解码吗?
这是我使用的图像:
编辑:
我搜索了更多有关使用OpenCv进行QR码检测的信息,并发现这些信息可用于编码来自https://docs.opencv.org/3.4.9/de/dc3/classcv_1_1QRCodeDetector.html的摘要
setEpsX(double epsX)
setEpsY(double epsY)
不幸的是文档非常糟糕,所以有人知道这两个参数是什么,并且它们是否可以解决我的问题?
最佳答案
我想我发现了问题:
我使用的图像的大小为2400x1600,难以解码。因此,我在解码图像之前调整了图像的大小,因此我的代码如下所示:
int main(int argc, char* argv[])
{
cv::Mat src = imread("scaled.png");
if(src.empty())
{
cout << "can not open " << "Picture" << endl;
return -1;
}
std::string data;
cv::resize(src,src, cv::Size(1600,1200));
QRCodeDetector qrDecoder = QRCodeDetector();
data = qrDecoder.detectAndDecode(src);
if(data.length()>0)
{
cout << "data: " << data; //data should be STOP
}
return 0;
}
关于c++ - 检测到OpenCv QR码,但无法解码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60080140/