我正在尝试使用“ zbarimg”源代码从嵌入式平台上的图像中检测条形码。构建zbar库或zbarimg.c文件时没有错误。但是,当我尝试通过嵌入式设备上的“ zbarimg”二进制代码对条形码进行解码时,出现以下错误:
.column {
border: 1px solid lightgrey;
}
同一张图像在我的计算机中得到了完美的解码。
通过一些调查,我注意到函数调用“ zbar_image_first_symbol”返回空值。
如何解决此问题?
答案 0 :(得分:0)
Zbar使用来自相机预览的nv21图像格式。如果您使用其他格式的图像数据,则必须将其转换为nv21。您可以使用easyRS库或手动将字节转换为字节来实现。
Nv21Image nv21Image = Nv21Image.bitmapToNV21(renderScript,结果);
之后,您可以设置“ Y800”像素格式的zbar库
图片条形码=新图片(nv21Image.width,nv21Image.height,“ Y800”); 条形码.setData(nv21Image.nv21ByteArray);
答案 1 :(得分:0)
我已解决该错误。原来我正在使用的config.h文件的条形码宏已注释掉,即ENABLE_EAN,ENABLE_CODE128和ENABLE_CODE39被注释掉了。因此,函数“ zbar_scan_y”(存在于“ img_scanner.c”中)无法检测符号的类型,并且syms-> nsysm将返回NULL。
PS:以下是可帮助您在Android OS上移植zbar的链接列表。
1。)Android来源: https://github.com/ZBar/ZBar
2。)使用Android进行编译的步骤可以来自: http://www.blackdogfoundry.com/blog/zbar-bar-code-qr-code-reader-android/
请注意,使用上述步骤进行编译时,可能会遇到未定义引用的错误。一些源文件需要包含在Android.mk文件中。此外,上述步骤中提供的补丁将在config.h文件中注释掉条形码宏。