java - 从JAVA中的图像中读取条形码

标签 java image

我有一个 java 应用程序,它需要从图像读取条形码到 java 程序。 zxing 给我留下了深刻的印象能够检索条形码的库,但不适用于所有图像(我的意思是如果图像质量稍差。)。

我的问题是,最适合读取条形码的图像格式是什么? JPEG 还是 PNG?我目前正在尝试 JPEG 图片。

另一个问题,从图像中检索条形码的最可靠的 java API/SDK 是什么。我已经试过了,Accusoft , DataSymbol , AtalaSoft , j4l这是付费版本。并经历了一些开源,如 Ron Cemer JavaBar . 但我仍然在寻找 JAVA API/SDK,它可以在条形码读取中提供准确的结果。

您关于条形码阅读器 JAVA API/SDK 的信息对我来说真的很有帮助。

最佳答案

如果您不介意为您的项目多付一点钱,@Tom Setzer 的解决方案非常棒。但是,如果您没有预算购买此类软件,我仍然建议您听听 Tom 的回答。

One option for improving results is some image processing prior to sending into the engine. Try to scale the image up prior to going from Gray/Color to Black and White. A better binarization (gray to b&w) than what is provided in the engine can also help.

他是对的,但我仍在使用 ZXing。 仅当您在尝试读取条形码之前进行一些图像处理时,它才有效。

我正在使用 OpenCV 进行图像处理。一个很棒的原生库,既适用于 Linux 和 Windows,也可能适用于其他一些平台(尚未研究)。

我就是这样做的。

  1. 将图像转换为灰度。
  2. 将条形码的高度调整为 4 倍,宽度调整为 8 倍。
  3. 应用 17x17 像素大小的高斯模糊。
  4. 应用二进制阈值,阈值为 225,最大值为 255。

完成这些步骤后,您会获得更好的结果。


资源:

关于java - 从JAVA中的图像中读取条形码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19874557/

相关文章:

java - LWJGL OpenGL Sprite 表

Java,从 ArrayList 中删除元素

JavaMail - MimeMessageHelper 附件不随邮件一起发送

c# - 将图片之间的差异显示为矢量

python - 灰度图像不是 jpeg

java - 点击时使用 ImageView 填充屏幕

java - 在 Android 中存储和显示图像的最佳方式

java - Android 在内部根目录中创建文件夹

java - 使用配置设置连接超时

javascript - 褪色图像/流畅的网站使用