背景
我小時候真的很喜歡交易卡。最近在一個盒子里我發現了很多以前收藏的萬智牌卡片,于是我轉念一想——我一共有多少張卡片,它們一共值多少錢?手動記錄和查找這些需要一段時間,所以我決定看看我是否可以自動化一些過程。而鑒別過程中我使用的是 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%)
到此就是最終結果了!
-
掃描儀
+關注
關注
2文章
425瀏覽量
67892 -
樹莓派
+關注
關注
117文章
1710瀏覽量
105724
發布評論請先 登錄
相關推薦
評論