opencv - 我想使用 OpenCV 来检测静态图像中的二维条形码,但文档似乎没有涵盖它

标签 opencv image-processing

OpenCV 有一些教程尝试检测实时视频流中的模式。 例如:

http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html

但是,这并不是我真正想要做的。我有静态图像,例如 .jpgs, 包括二维条码。

我的目标是从图像中分离出一个或多个二维条码。如果 .jpg 为 1000 x 500 像素,而二维条码仅为 200 x 200 像素,我只想将 200x200 像素样本保存到输出文件。

我怀疑这需要 Haar 级联或 LBP 级联。我怀疑特征检测无法做到这一点。

但是,我找不到任何解决这个问题的教程。

此外,opencv 发行版会自动构建一些看似相关的可执行文件,例如 opencv_perf_objdetect 和 opencv_test_objdetect,但它们似乎与教程或文档中的任何其他内容都不对应。

问题:OpenCV 文档中是否实际解释了如何检测静态图像中的子图像的问题?如果有,在哪里?

谢谢。

最佳答案

我最近在做一个条形码检测项目。一开始我认为一个简单的机器学习算法结合基于纹理的描述符可以解决条形码检测。然而,我遇到了几个问题,因为在我的应用程序中,我不知道是否有条形码,它的大小,它的类型(UPC-A,EAN ......),它的方向......应该尝试多种组合为了本地化条形码。

我也没有处理或没有时间创建适合我拥有的图像类型的训练数据集,所以我没有继续使用这个解决方案。 然后看了好几篇文章。许多专门的条形码检测方法都是从图像中存在条形码的假设开始的,因此他们试图找到它。此外,一些算法假设条形码是水平的,并将这一假设作为先验信息。

我找到的最佳解决方案是 BLaDE ( http://www.ski.org/Rehab/Coughlan_lab/BLaDE/BLaDE_TechReport.pdf )。该代码也可在 Web 上获得,因此您可以轻松地对其进行测试。唯一的问题是它专为 UPC-A 条形码设计。

要恢复,最适合您的解决方案取决于几个方面:

  • 条码类型

  • 你肯定知道有条形码

  • 方向:任意/给定角度

  • 运行它的实时应用程序/设备

  • 你处理了一个训练集

祝你好运!

关于opencv - 我想使用 OpenCV 来检测静态图像中的二维条形码,但文档似乎没有涵盖它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22930001/

相关文章:

c# - 移动端角点检测算法

c - 如何在 OpenCV 中获取单独的轮廓(并填充它们)?

opencv - 如何使用 OpenCV/JavaCV 识别 parking 场?

c++ - 如何在 OpenCV 中混合多个图像?

python - 滑动滑动窗口 "intelligently"?

android - 颜色触摸效果的最佳方法

java - 使用 OpenCV for Android 将小图像复制到相机框架中

image - 检测人像图像中的头发颜色

c++ - OpenCV - 套接字接收到失真图像

ios - iOS中与真实物体的图像匹配