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