2013-11-28 33 views
0

我和一些同学正在为学校开展一个项目。我们目前的问题的简单描述:用Python识别QR码的PIECE

我们必须建立一个车辆,并用树莓派和相机搭载它。当QR码放在相机前面时,我们可以让相机拍摄它的照片。通过使用外部Python模块(qr-tools),Raspberry Pi可以自动解码QR码。

当QR码的只是一个(小)部分是摄像机可见,解码过程将失败(如预期)。我们想知道是否有简单的方法来检测图像中QR码的部分。这样,树莓派可以重新定位车辆,以便可以在相机上捕获整个QR码。

这里的关键字是'easy'。我们还有几天的时间来改进我们目前的车辆,解决这个问题将是一个不错的功能。

编辑:我错误地链接了错误的模块。

回答

1

我打算假设您正在尝试识别与相机视图边缘重叠的QR码。在这种情况下,您可以检查图像的四个边缘以获得高对比度(黑白交替显示)区域,如果发现任何问题,请转到相应的方向。

下面是一个例子,使用random image from Flickr(反复的边缘像素):

QR Code on classroom window, source allanah_k@flickr

我建议沿所有四个边缘微分的灰度值,并且计算绝对差值的滚动平均值。峰值最高的一方是你最好的选择。

供参考,这里是我从上述图像计算(以灰色示出)的亮度值,用平均超过±20像素的窗口的绝对差的结果一并:

Brightness of edge pixels and averaged difference values

作为你可以看到,图像顶部的天窗(或任何它)会有问题,但前景中的QR码仍然会产生最高的峰值。

+0

谢谢你的回答 - 看起来应该不难做出这样的工作。但是,目前我正在使用opencv研究数字图像相关和跟踪(DIC/DDIT)。 这是用于测量光学鼠标运动的技术。如果我们可以将它应用到我们的车辆上,它可能能够准确行驶,然后QR码就会在摄像头前面(这将消除识别一段QR码的需要)。 但是,如果这种方法无效,我们可能会实施您的解决方案,假设它可以在一两天内完成。 – jvanheesch