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

时间:2018-03-15 11:09:04

标签: javascript node.js image-processing qr-code

我使用jsQR进行解码,Jimp用于从给定图像中制作位图数据。当我尝试使用单个QR码 jsQR 的图像时,它会给出解码值。但是有两个QR码的图像,它返回 null 。那么我们如何解码具有两个QR图像的图像呢?

感谢未来的回复:)

1 个答案:

答案 0 :(得分:1)

这实际上是一个非常复杂的问题。如果您检查jsQR代码,请在src/locater/index.ts中找到该函数:

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

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

qr code corners

显然,如果您的图片包含两个qr代码,那么图片中至少会有6(忽略部分)角落要素,从而导致locate函数出错,以及随后的解码失败。

为了在单个图像中处理多个QR码,您需要创建一个能够在单个图像中找到QR码子图像的功能,并将其作为单个图像提取出来进行处理。换句话说,您需要弄清楚如何将图像裁剪为两个QR码,并单独处理每个QR码(除非您能够找到能够执行此过程的库)。

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

您可以复制此代码,并在图片中构建所有找到的四边形列表,并查看其空间关系以确定是否找到> 4四边形,哪里是最好的正确裁剪图像的地方是。