如何在 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
个四边形,正确裁剪图像的最佳位置是哪里。
我正在使用 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
个四边形,正确裁剪图像的最佳位置是哪里。