如何在 Javascript 中解码具有多个 QR 图像的图像

How to decode Image with multiple QR images in Javascript

我正在使用 jsQR for decoding and Jimp 从给定图像制作位图数据。当我尝试使用单个 QR 码 jsQR 的图像时,它给出了解码值。但是带有两个二维码的图像,它返回null。那么我们如何解码具有两个 QR 图像的图像?

感谢您的回复:)

这其实是一个比较复杂的问题。如果您检查 jsQR 代码,在 src/locater/index.ts 中,您会发现函数:

export function locate(matrix: BitMatrix): QRLocation { ...

此函数执行搜索有效 QR 码的三个角方块的逻辑。

显然,如果你的图片包含两个二维码,那么图片中至少会有6个(忽略部分)角特征,导致locate函数出错,并且后续解码失败。

为了处理单个图像中的多个 QR 码,您需要创建一个函数,该函数能够在单个图像中找到 QR 码子图像,并将它们提取为单个图像进行处理。换句话说,您需要弄清楚如何将图像裁剪成两个二维码,并分别处理每个二维码(除非您能够找到能够执行此过程的库)。

如果您查看 locate 函数的第一部分,您会发现它搜索整个图像,寻找角四边形特征的 MAX_FINDERPATTERNS_TO_SEARCH 个实例(当前设置为 4,因此解码错误)。

您可以复制此代码,并构建一个包含 所有 在图像中找到的四边形的列表,并查看它们的空间关系以确定是否找到 > 4 个四边形,正确裁剪图像的最佳位置是哪里。