我正在构建一个应用程序来使用来自 android 手机的摄像头读取 vin 号条码。我不知道如何从摄像头捕获的图像中读取条码。(即)是否有任何类可以读取 vin 号格式的条码。我已经尝试过 zxing 和其他库对我没有用。谢谢
注意:我尝试在 DDG.gg 和 Stackoverflow 中搜索,但没有合适的解决方案。
我正在构建一个应用程序来使用来自 android 手机的摄像头读取 vin 号条码。我不知道如何从摄像头捕获的图像中读取条码。(即)是否有任何类可以读取 vin 号格式的条码。我已经尝试过 zxing 和其他库对我没有用。谢谢
注意:我尝试在 DDG.gg 和 Stackoverflow 中搜索,但没有合适的解决方案。
根据 google code 上的这个帖子,zxing 应该支持它。他们说,这个问题可能与相机分辨率有关。他们提到“auqoniq VIN扫描仪”,这似乎是一个基于zxing的android应用程序。
我已经成功地使用 zxing 的源代码解码为有效的 VIN 字符串,并通过意图将 VIN 字符串编码回条形码(有一点帮助)。
这是关键——
将您的 zxing 源代码集成为库。这是分步链接:
请注意,这里也有一个很好的讨论,关于为什么从开发人员的角度不应该这样做,但是代码是免费开放使用的,我们需要以目前无法通过意图完成的方式对其进行修改。所以我们继续。
在您的项目中,通过意图调用 zxing(正如他们推荐的那样);指定intent.putExtra("SCAN_MODE","ONE_D_MODE");
我实际上已经让它以两种方式工作(有和没有这条线),但如果你看到包括它在内的更好的结果,这取决于你。一旦进入画面,我通常会在不到 1/4 秒的焦点内扫描 VIN。
预览分辨率很重要,因为相机预览会向解码器发送帧以搜索有效的条形码。
所以......在CameraConfigurationManager.java中,指定一个更大的MAX_PREVIEW_PIXELS
(不超过你的屏幕分辨率)。我使用“1024 * 600”——我的设备分辨率。这可能需要一些调整。
在 CameraManager.java 中,编辑您的取景矩形以扩大更大条形码的大小,通过 private static final int MAX_FRAME_WIDTH = screenpixelsinteger;
,我的是 1000。
在 中public Rect getFramingRect() {
,编辑int width
为= screenResolution.x * 1
(或* nothing
),而不是* 3 / 4
。这会将取景矩形加宽到与屏幕分辨率一样宽,但不会超过MAX_FRAME_WIDTH
上面指定的宽度(如果 MFW 较低,它将被钳制)。
最后,扫描!
我不相信我已经编辑了任何其他变量,但如果我发现我做了这个工作,我会更新这个答案。
我刚刚将 zxing 作为库集成到我的应用程序中,并且我的应用程序可以正确扫描和解码 VIN。我什至更改了遮罩以扩大可用的扫描区域。
问题肯定是相机分辨率。大而清晰的 VINS 扫描没有任何障碍。肮脏的VINS没有。
如果没有扫描,我将让我的 VIN 字段可用于手动输入。请记住运行校验位方法以确保它是有效的 VIN。
我找到了一个我可以在这里使用的:http: //introcs.cs.princeton.edu/java/31datatype/VIN.java.html