我使用jsQR进行解码,Jimp用于从给定图像中制作位图数据。当我尝试使用单个QR码 jsQR 的图像时,它会给出解码值。但是有两个QR码的图像,它返回 null 。那么我们如何解码具有两个QR图像的图像呢?
感谢未来的回复:)
答案 0 :(得分:1)
这实际上是一个非常复杂的问题。如果您检查jsQR
代码,请在src/locater/index.ts
中找到该函数:
export function locate(matrix: BitMatrix): QRLocation { ...
此函数执行搜索有效QR码的三个方角的逻辑。
显然,如果您的图片包含两个qr代码,那么图片中至少会有6
(忽略部分)角落要素,从而导致locate
函数出错,以及随后的解码失败。
为了在单个图像中处理多个QR码,您需要创建一个能够在单个图像中找到QR码子图像的功能,并将其作为单个图像提取出来进行处理。换句话说,您需要弄清楚如何将图像裁剪为两个QR码,并单独处理每个QR码(除非您能够找到能够执行此过程的库)。
如果查看locate
函数的第一部分,您会看到它搜索整个图像,查找角四边形特征的MAX_FINDERPATTERNS_TO_SEARCH
个实例(当前设置为4,因此解码错误。)
您可以复制此代码,并在图片中构建所有找到的四边形列表,并查看其空间关系以确定是否找到> 4
四边形,哪里是最好的正确裁剪图像的地方是。