【问题标题】:Multiple QRCode detection from video stream从视频流中检测多个 QRCode
【发布时间】:2016-10-21 21:56:53
【问题描述】:

我正在用 C# 编写一个程序,该程序必须检测和扫描人们贴在胸前的标签(使用安全摄像头)中的二维码,并且作为第二层安全措施,还必须捕获他们的脸并在一个数据库。现在,我能够很好地处理人脸识别,但程序一次无法读取多个二维码。我怎么能处理这个?我正在使用 ZXing 的库以及 Emgu.cv。有更好的选择吗? 我的二维码阅读代码是:

        bitmap = frame.Bitmap;
        txtQreader.Text = Qrreader(bitmap); //it's inside an if, not that it matters :p


    private string Qrreader(Bitmap x)
{
    BarcodeReader reader = new BarcodeReader { AutoRotate = true, TryHarder = true };
    Result result = reader.Decode(x);
    string decoded = result.ToString().Trim();
    return decoded;
}

【问题讨论】:

  • 您需要包含更多信息,以查看如何创建最小完整且可验证的示例stackoverflow.com/help/mcve 但我的猜测是您将整个图像传递给Qrreader。您应该分割出图像中的每个 QR,然后一次将它们传递给Qrreader
  • @andrew 不知道它缺少信息,对不起(堆栈的新手)。这正是我的问题。如何分割每个 QR。
  • 欢迎来到 Stack。对于常规编程问题,这可能足够信息,但对于计算机视觉问题,您应该包括 3 张图像。 1. input 2. current (incorrect) output 3. desired output查看您的代码我没有发现任何问题,但显示图像将有助于揭示问题。如果您在一帧中传入带有多个二维码的整个frame,那么Qrreader 可能只会解码它找到的第一个代码。我认为您需要识别每个二维码。然后创建一个只有二维码的子图,然后把子图发到Qrreader这个方法你试过了吗?
  • @andrew 已经解决了,谢谢

标签: c# opencv computer-vision zxing emgucv


【解决方案1】:

在咨询另一个网站后,问题得到解决,有人告诉我,使用 IMultiBarcodereader 将返回一个数组,其中包含多个代码中包含的所有解码信息。还有reader.Decode(x)必须变成reader.Decodemultiple(x)

【讨论】:

    【解决方案2】:

    您可以先将阅读器定义为QRCodeMultiReader,然后定义一个向量来包含结果,如下所示:

    QRCodeMultiReader reader;
    vector<Ref<Result>> results(reader.decodeMultiple(bitmap, DecodeHints(DecodeHints::TRYHARDER_HINT)));
    

    您可能知道应该创建一个BinaryBitmap

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 2018-05-25
      • 2017-12-30
      • 1970-01-01
      • 2013-04-24
      • 2013-05-22
      • 2019-07-26
      相关资源
      最近更新 更多