android - 使用 Android 阅读低对比度 (3D) 打印的二维码

标签 android image-processing qr-code barcode-scanner

我目前的情况是,我需要一台能够读取如下所示的二维码的扫描仪。

Printed QR codes

您可以立即明白为什么这会造成问题。由于“普通”QR 码通常在白色背景(或某些变体)上打印成黑色以提供最大对比度,因此这些“打印”QR 码几乎没有。我尝试优化这些以尽可能多地显示 QR 码和背景之间的差异,但这真的不在我的操 Helm 室里。我找到了一些 OpenCV 引用资料,用于应用某些过滤器来提取轮廓,但恐怕结果还有很多不足之处。

enter image description here 最后两张图片用人眼几乎无法识别,更不用说计算机视觉了。在理想情况下,最后一张图片应该是全白的,带有几乎全黑的 QR 码。

关于扫描仪的实际实现,我已经尝试了下面列出的 SDK,但没有成功从 QR 码获得响应。

  1. Mobile Vision API (谷歌播放服务)
  2. ZXing SDK
  3. Anyline SDK
  4. ZBar

简而言之,我的问题是:

我是否可以添加某种类型的过滤以使 QR 码更具可读性,或者是否有其他替代使用过滤器的方法。

最佳答案

我会亲自尝试以下步骤:

  1. 使用 this 将颜色空间更改为 Lab

  2. 仅从颜色空间中提取 L channel 。

  3. 使用 CLAHE而不是equaliseHist

  4. 使用您检测二维码的方法

关于android - 使用 Android 阅读低对比度 (3D) 打印的二维码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41698062/

相关文章:

Android 按钮在 2.2 中很难被击中

python - 使用 OpenCV VideoWriter 将 RTSP 流存储为视频文件

java - ClassNotFoundException 错误。 Eclipse IDE 出现问题

Android : ZXingScannerView by - me. dm7.barcodescanner :zxing:1. 9 不扫描二维码

java - 如何从与 Firebase 数据库同步的 ArrayList 中删除条目?

java - 导航栏中的底部按钮是什么,您有时会看到它用于更改设置

r - 如何使用 hexSticker 创建 SVG 文件

iphone - ios应用程序中的QR码扫描

android - 当被另一个对象(如 TextWatcher)封装时,参与者或 channel 是否需要被管理(关闭/终止)?

c++ - 矩阵的简单传递,即。 cv::Mat 到 OpenCV2.4 中的函数