如何检测扫描纸上的图案(如二维码),使其正确rotated/scaled/identified?

How to detect a pattern (such as a QR code) on a scanned paper so that it can be correctly rotated/scaled/identified?

我有需要打印的 PDF 文件或 JPG 图像(这些是需要手动填写的公式),我需要:

我应该在公式纸上添加什么样的图案,这样 Python 库(哪个?)将能够裁剪它/旋转它/用ID?

我正在考虑在纸的左上角添加一个二维码(包含一个数字 ID),在纸的右下角添加一个二维码,或者也可以添加 "hirondelles" 个符号:

QR 码将使用 qrcode 库生成:

import qrcode
img = qrcode.make('ID1138934')

并在 PDF 顶部添加 this method


注:

此任务需要结合两种技术:

  • 第一步:检测每个二维码4个角的x,y坐标。 Python 库 zbar 对此很有用。 中的代码+答案显示了如何做。

  • 第二步:现在需要去歪斜/透视校正/"homography"。 Here 是如何用 Python + OpenCV 做到的。