我用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码但不能将其解码吗?

这是我使用的图像:

c&#43;&#43; - 检测到OpenCv QR码,但无法解码-LMLPHP

编辑:
我搜索了更多有关使用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/

10-11 22:23
查看更多