我正在尝试使用web Assembly为Web制作一个PDF417条形码阅读器(有几个,但唯一可靠的是许可的)。这个想法很简单,只需用C代码构建一个可以通过JavaScript调用的二进制文件即可。
我跟踪了this guide,它几乎把我带到了那里!我不得不将--enable-codes=pdf417作为参数添加到configure中,以启用PDF417符号并禁用所有其他我不感兴趣的符号。
该代码实际上对任何其他类型的符号(see demo)都工作得非常好,但是如果我编译ZBar接受PDF417,它会检测到它,但会抛出一个警告:
WARNING: zbar/decoder/pdf417.c:73: pdf417_decode8: Assertion "clst >= 0 && clst < 9" failed.
dir=0 sig=5a44 k=9 buf[0000]=
WARNING: zbar/decoder/pdf417.c:89: pdf417_decode8: Assertion "g[0] >= 0 && g[1] >= 0 && g[2] >= 0" failed.
dir=1 sig=ca03 k=6 g0=ffffffff g1=e71 g2=585 buf[0000]=你可以在我前面提到的指南中看到我正在使用的所有代码(唯一的区别是我在编译之前启用了PDF417 ){有什么想法吗?
发布于 2019-09-18 10:09:49
zbar的默认行为是尝试解码所有symbol types。
if(sym == ZBAR_NONE) {
static const zbar_symbol_type_t all[] = {
ZBAR_EAN13, ZBAR_EAN2, ZBAR_EAN5, ZBAR_EAN8,
ZBAR_UPCA, ZBAR_UPCE, ZBAR_ISBN10, ZBAR_ISBN13,
ZBAR_I25, ZBAR_DATABAR, ZBAR_DATABAR_EXP, ZBAR_CODABAR,
ZBAR_CODE39, ZBAR_CODE93, ZBAR_CODE128, ZBAR_QRCODE,
ZBAR_PDF417, 0
};
const zbar_symbol_type_t *symp;
for(symp = all; *symp; symp++)
zbar_decoder_set_config(dcode, *symp, cfg, val);
return(0);
}您的图像是否包含PDF417条形码?如果没有,您可以指示zbar只解码您感兴趣的符号类型,因此PF417解码器将不会运行。您可以使用symbols参数来完成此操作,例如,如果您的图像仅包含二维码,
// disable all
scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 0);
// enable qr
scanner.set_config(ZBAR_QRCODE, ZBAR_CFG_ENABLE, 1);在pyzbar中
from pyzbar.pyzbar import ZBarSymbol
decode(Image.open('pyzbar/tests/qrcode.png'), symbols=[ZBarSymbol.QRCODE])发布于 2021-07-15 02:15:59
对于任何试图使用ZBar阅读PDF417的人来说,PDF417 decoding is incomplete。这是行不通的。你最好的开源选择是ZXing。
https://stackoverflow.com/questions/54487079
复制相似问题