首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Android读取低对比度(3D)打印QR码

用Android读取低对比度(3D)打印QR码
EN

Stack Overflow用户
提问于 2017-01-17 13:08:49
回答 2查看 1.3K关注 0票数 3

我目前的情况是,我需要一个扫描仪,可以处理读取QR代码,如下所示。

你可以立即明白为什么这会造成问题。由于“普通”QR代码通常被打印在白色背景上(或该背景的某些变化)以提供最大的对比度,这些“打印的”QR代码很少提供给任何人。我试着优化这些,以显示尽可能多的QR代码和背景之间的差异,但这真的不是在我的舵手。我已经找到了一些用于应用特定过滤器提取大纲的OpenCV引用,但恐怕结果还远远不够理想。

最后两幅图像很难用人眼识别,更不用说计算机视觉了。在理想的情况下,最后的图像应该是完全白色的,几乎完全黑色的QR代码。

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

  1. 移动视觉API (Google服务)
  2. ZXing SDK
  3. Anyline SDK
  4. ZBar

简言之,我的问题是:

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

EN

回答 2

Stack Overflow用户

发布于 2017-01-20 14:51:29

我个人会尝试以下步骤:

  1. 使用将颜色空间更改为
  2. 只从颜色空间提取L通道。
  3. 使用http://docs.opencv.org/3.1.0/d5/daf/tutorial_py_histogram_equalization.html而不是equaliseHist
  4. 使用检测QR的方法。
票数 0
EN

Stack Overflow用户

发布于 2017-01-20 15:05:02

在转换到亮度(或获取b&w中的图像)之后,您将需要强大的二进制化过滤器--我可以推荐在javaocr库:https://sourceforge.net/p/javaocr/source/ci/master/tree/core/src/main/java/net/sourceforge/javaocr/filter/SauvolaBinarisationFilter.java中实现的Sauvola二进制化。

(有一些android演示,展示了它在预览图像上的使用情况)

这种过滤器在噪音和不均匀的照明条件下真的工作得很好。而且它也相当快,尽管工作超过50x50窗口(实际上,窗口大小与此过滤器无关)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41698062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档