【问题标题】:Custom Product Code - Computer Vision - Python自定义产品代码 - 计算机视觉 - Python
【发布时间】:2017-09-18 09:00:00
【问题描述】:

对于一个项目,我需要从网络摄像头读取产品代码(类似于 QR 代码)。然而,与 QR 码不同 - 它有许多使扫描非常容易的 python 库 - 我需要制作自定义产品代码 - 这意味着我需要一个自定义库。代码设计非常简单——一个形状对应“1”,另一个形状对应“0”。

有谁知道我将如何在 python 中对阅读器进行编程?我应该研究什么样的算法?就编程能力而言,我会说我是初学者(所以请尽量避免使用复杂的术语)。

【问题讨论】:

  • 您好,如果您在此处发布一些代码,它会很有用。你到哪里去了?你试过编码吗?否则,会有很多愤怒的用户投票否决你,因为看起来你只是在索要代码。
  • 这就是我不知道从哪里开始的事情。我应该寻找什么?例如。我应该研究haar cascades吗?等等。
  • 为什么不先编程编码呢?制作一个将 1 和 0 编码为两种不同形状的模块,然后再制作一个对它们进行解码的模块。或者你必须在纸上物理地有一个视觉代码?
  • 是的,它们将实际打印在纸上(如二维码)。
  • 对我来说,我很难理解 Python 如何将代码与图像的其余部分区分开来。

标签: python computer-vision


【解决方案1】:

首先你可以设计一个简单的编码方案并使用opencv对其进行编程。 OpenCV 有在图像上绘制基本形状的方法。

您可以从阅读标准条码检测的this article 开始。如果您的代码过于复杂而无法使用此方法检测,您可以训练 Haar 分类器。

根据您的代码设计,霍夫线变换、霍夫圆变换、单应性等可用于在检测后回读代码。

我曾经使用叶状模式编写了一个编码器和解码器。如果您需要代码,可以通过 chamin.yubi@icloud.com 与我联系(代码已生锈,但我回复缓慢)。

【讨论】:

  • 非常感谢您的帮助! Zbar (zbar.sourceforge.net),是我目前用来读取二维码的库。在“关于”页面上,它说它将图像视为一个阵列,从激光条形码扫描仪读取每一行作为一行,并应用“简单的 1D 信号处理”。我可以使用这种方法来检测我的自定义代码吗?我应该使用什么样的算法和“一维信号处理”?
  • 这种方法理论上可以应用于任何只使用两种颜色(一种用于图案,另一种用于背景)的自定义代码。由于该库可以读取 QR 码,这意味着它具有比激光条码扫描仪更好的功能。要从一维扫描仪信号解码一维条码,您需要缩放(迎合对角线扫描)、相关(解码)和过滤(降噪同时不会使条码图案过于模糊)等算法。
  • 这会比使用 Haar 分类或使用 opencv 图像处理方法更难吗?
  • Haar 分类器将有利于条码定位;也就是说,如果条形码不在图像的中心,和/或可能以不同的尺寸出现,则找到条形码的确切位置和大小。但是对于实际解码代码,为每个可能的代码训练一个 Haar 分类器是不切实际的。如果您的代码与标准条形码有很大不同(例如树枝的图案),则使用 OpenCV 进行解码会更快。否则,我建议使用这个库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 2011-10-18
  • 2017-08-26
  • 1970-01-01
  • 2021-06-27
  • 2018-05-22
相关资源
最近更新 更多