c - ZBar - 尝试读取 PDF417 代码

标签 c webassembly zbar pdf417

我正在尝试创建一个 PDF417使用 Web Assembly 的网络条形码阅读器(有一些,但唯一可靠的一个是获得许可的)。这个想法很简单,只需用 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]=

这些断言位于 71 行和 86 ZBar 的。

您可以在我之前提到的指南中看到我使用的所有代码(唯一的区别是我在编译之前启用了 PDF417)¿有什么想法吗?

最佳答案

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 解码器将不会运行。您可以使用符号参数来执行此操作,例如,如果您的图像仅包含 QR 代码,

// 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])

关于c - ZBar - 尝试读取 PDF417 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487079/

相关文章:

c++ - 将 C/C++ 套接字传递到 EM_ASM 以用作 Emscripten 中的 websocket

android - android中ZXing和ZBar的解码速度

Android Studio 0.2.6 和 ZBar 项目设置

node.js - 使用 Node 调试 WebAssembly

python - 使用OpenCV和Zbar在Python中检测QR码的大小

c - 将 mbed 应用程序导出到 uVision

c - 将几个依赖库链接到我的 "bare metal"C 应用程序中

C 中用于 SSHD 的自定义 PAM

c - 如何生成模式 5 5 5 5 5 4 4 4 4 3 3 3 2 2 1

c++ - Emscripten C++ 到带有类的 WASM - "error: undefined symbol"