如何利用树莓派制作卡片扫描仪

描述

  背景

  我小时候真的很喜欢交易卡。最近在一个盒子里我发现了很多以前收藏的万智牌卡片,于是我转念一想——我一共有多少张卡片,它们一共值多少钱?手动记录和查找这些需要一段时间,所以我决定看看我是否可以自动化一些过程。而鉴别过程中我使用的是 Raspberry Pi,并且用乐高构建平台并利用好 AWS S3/Rekognition!

  步骤

  使用树莓派、RPi 相机和乐高平台拍摄卡片标题

  将图片上传到 AWS S3 存储桶进行存储和处理

  使用 AWS Rekognition 从图片中提取文本并针对定价 API 进行查询以获取每张卡的市场价格

  乐高

  我不擅长木工,如果在外形设计方面使用木工产出,可能会导致项目最终比较粗糙。所以我决定使用乐高来制作项目的外形,并且你可以很容易的买到。这个项目不会展示如何一砖一瓦地建造它,但我会在这里使用过程中所拍下的图片来以达到重现的效果!

  这个设计的灵感来自我几年前买的一个便宜的 7 美元卡片分类器。后面的伺服系统能够以简单的齿轮状设置连续旋转并向前移动轮胎。前面的轮子从深绿色部分伸出来​​,是为了防止其他卡片滑出。只有足够的空间一次推出一张卡。我还用了几张贴在一起的卡片来保持卡片足够的重量,以确保只有一张出来。

  

树莓派

  

树莓派

  

树莓派

  

树莓派

  

树莓派

  相机位于距离平台几英寸的一堆砖块上,倾斜的角度与卡片的位置对齐。分辨率已用代码修改以捕获卡的顶部。

  

树莓派

  硬件

  Raspberry Pi 是这个项目的最佳选择,因为我需要为外围设备运行 python。我们需要的其他东西是两个伺服电机和一个相机。我有一个连接到面包板的 5V 电源 - 不是强制性的,但很有帮助。

  编码

  代码完全用 python 2.7 编写。一个脚本用于为伺服系统供电并拍照;另一种是针对 Rekognition 处理存储在 S3 中的图片。

  一旦我们将卡片加载到乐高平台上,我们可以简单地执行以下操作:

  python mtg_servo.py 《set_abbreviation》

  这将启动伺服系统并扫描卡片。完成后,我们可以退出脚本并加载更多内容。我一分钟能做大约 20-25 张牌。《set_abbreviation》 是卡组的三个字母代码。这有助于我们在图像处理和定价 API 方面保持井井有条,例如“M13”集的所有 .jpg 文件都写入 《current_directory/M13》 路径。

  AWS S3 和 Rekognition

  我尝试使用 tesseract 和 OpenCV 进行 OCR。虽然两者都是很棒的工具,但事实证明 Rekognition 更易于使用。它为定位、照明、距离等提供了很大的灵活性。您需要一个免费的 AWS 帐户才能执行此操作。亚马逊的 AWS 免费套餐非常慷慨——您每月可以处理 5,000 张图片。由于时间原因,我手动上传了 S3 文件(未显示,但这里有一个指南)。s3 存储桶的设置与当前目录 - /set_name/file.jpg 完全相同。下面的屏幕截图显示了 Rekognition 的演示版处理一些拍摄的照片。

  

树莓派

  我们可以自动化这个过程!将所有卡片上传到存储桶后,我们可以运行以下代码将检测到的文本输出到 csv 中:

  python Rekognize_S3.py 《set_abbreviation》

  这是图像处理的结果。如果图片质量更好,我毫不怀疑这会更高。我遇到的另外两个主要问题是 (1) 字体 - 许多字体的字符看似接近我很难破译它们的位置和 (2) 照明。在我扫描的 920 张卡片中:

  619 张是准确的 (67.3%)

  201 张相比少了 (21.8%)

  100 张多了(10.9%)

  到此就是最终结果了!

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分