我们如何对使用手机相机拍摄的条形码进行编程阅读?例如,如何使用iPhone或Android或Java ME?我们是否需要单独的硬件来读取条形码或我们可以进行图像处理吗?
答案 0 :(得分:19)
Google已经使用Zebra Crossing库简化了不可思议。他们支持在以下平台上通过图像进行扫描:
和其他人移植到:
正如另一张海报已经提到的,在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
}
}
}
答案 1 :(得分:4)
可以通过手机摄像头分析来读取条形码。
一个众所周知的复杂因素是固定焦距相机(如较旧的2G / 3G iPhone和一些机器人)无法从短距离拍摄对焦快照。为了解决这个问题,必须使用特殊的“去卷积”算法 - 上次我检查过这不是Zebra Crossing的一部分。
有些已经实施了解决方案 - 我知道以下适用于iPhone的应用程序可以使用定焦相机读取UPC:pic2shop(Benoit Maison / Vision Smarts),RedLaser(Occipital)和ShopSavvy(日本大) - 检查它们out,我认为所有这些都有感兴趣的第三方可用的SDK。
答案 2 :(得分:2)
对于Android来说,它非常简单。只需使用条形码扫描仪应用程序提供的服务(依赖性)。然后条形码扫描仪应用程序将处理所有扫描部分,并将简单地返回代码。
我认为类似的解决方案可用于其他平台,但在Android中,由于其Intent架构,它更加容易。
答案 3 :(得分:1)
我建议选择一种解决方案,解码模糊图像中的条形码。有许多低端Android手机只有定焦相机,需要比上面列出的软件解决方案提供的二进制阈值更复杂的图像处理解决方案。此类更高级解决方案的示例包括redlaser或Scandit barcode scanner SDK。
Scandit SDK非常易于集成,并附带免费社区版。还有product API可以直接将条形码编号转换为产品名称。
免责声明:我是Scandit的联合创始人之一。
答案 4 :(得分:0)
显然,可以从图像中读取条形码。您可能需要考虑像
这样的问题有很多现有的项目和产品可以解决这个问题......例如Here is one。有些解决方案似乎对上述点不太敏感,但声称能够查找和识别条形码,无论图像中的方向和位置如何。
答案 5 :(得分:0)
为了更新所有想要回答此问题的新手,Google现在通过Google Play服务提供Barcode Detection Apis,以便使用手机相机简化扫描条形码。不再需要依赖第三方Apis。