使用手机相机拍摄照片进行条形码识别

11

如何以编程的方式读取使用手机摄像头捕获的条形码?例如,如何在iPhone、Android或Java ME上实现此功能?我们需要单独的硬件来读取条形码吗,还是可以进行图像处理?

6个回答

19

谷歌使用他们的Zebra Crossing库使这个过程变得非常简单明了。他们支持以下平台上的图像扫描:

  • J2SE
  • Android

其他人已经将其移植到:

  • J2ME
  • CSharp
  • CPP
  • Rim
  • iPhone
  • Bug

正如另一个帖子所提到的,对于Android,您还可以使用Intent来调用条形码阅读器,类似于:

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.putExtra("SCAN_MODE", "ONE_D_MODE");
        startActivityForResult(intent, 0);
    }
};

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
}

2
ZXing的问题 - 上次我检查过 - 是它不能与大多数手机(便宜的或iPhone 2G)所配备的固定焦距相机一起使用。 - Nas Banov

4
条形码可以通过手机相机的分析来读取。
一个众所周知的问题是,固定焦距的相机(例如旧款2G/3G iPhone和一些Android手机)无法从短距离拍摄到清晰的快照。为了解决这个问题,必须使用特殊的“去卷积”算法 - 上次我检查时,这不是Zebra Crossing的一部分。
一些人已经实现了解决方案 - 我知道以下iPhone应用程序可以使用固定焦距相机读取UPC:pic2shop(Benoit Maison / Vision Smarts),RedLaser(Occipital)和ShopSavvy(Big in Japan)- 请查看它们,我认为它们都有可供有兴趣的第三方使用的SDK。

你能解释一下什么是聚焦快照和特殊的反卷积算法吗? - unj2
这是关于“反卷积”的术语——“去卷积”不是正确的术语。 - mmr

2

对于Android来说,非常简单。只需使用条形码扫描应用程序(依赖项)提供的服务。然后,条形码扫描应用程序将处理所有扫描部分,并简单地返回代码。

我认为类似的解决方案也适用于其他平台,但在Android中更容易实现,因为它具有Intent架构。


1
我建议选择一个能够在模糊图像中解码条形码的解决方案。市面上有许多低端安卓手机只配备了固定焦距相机,需要比上述软件解决方案更复杂的图像处理解决方案。这样更高级的解决方案包括redlaser或Scandit条形码扫描器SDK
Scandit SDK非常易于集成,并带有免费的社区版。还有一个产品API,可以轻松将条形码数字转换为产品名称。
声明:我是Scandit的联合创始人之一。

0

针对所有寻找此问题答案的新手,现在Google通过Google Play服务提供条形码检测API,以简化使用手机相机扫描条形码的过程。不再需要依赖第三方API。


0

很明显,从图像中读取条形码是可能的。你可能需要考虑以下问题:

  • 方向;也许拍照时不是正对着,所以条形码不是竖直的。此外,它可能是倒置的...
  • 焦点;如果拍摄模糊怎么办?可能存在一个极限,超过这个极限就无法安全地解释了。
  • 裁剪;如果构图不好,整个代码甚至都不在图像中怎么办?

有很多现有的项目和产品可以解决这个问题... 这里是其中一个。有些解决方案似乎不太敏感于上述的问题,但声称能够在图像中找到和识别条形码,而不考虑方向和位置等因素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接