點擊上方“AI算法與圖像處理”,選擇加"星標"或“置頂”
重磅乾貨,第一時間送達
魔方解不開了怎麼辦,讓程序來幫你。
只需用攝像頭把魔方的六個面掃描一遍就能直接給出還原步驟。
即使你的魔方不是標準配色或房間的照明情況特殊也可以通過顏色校準模式來識別。
這款荷蘭小哥發佈的3階魔方解算器“Qbr”已經在GitHub上開源。
小哥還貼心的把魔方公式中的步驟代號翻譯爲人話,並且支持中文,可以直接按照描述操作。
中文是小哥自學的,他還給自己起了箇中文名叫“金可明”。
解算結果大概是這樣的。
步驟數: 20
復原教程: B2 U2 F' R U D' L' B' U L F U F2 R2 F2 D' F2 D R2 D2
1. 將魔方的後面旋轉180°。
2. 將魔方的頂層旋轉180°。
3. 將魔方的前面向左旋轉90°。
...
20.將魔方的底層向右旋轉90°。
安裝方法
使用Qbr需要你的電腦裝有Python3,Git以及一個攝像頭。
安裝方法如下
$ git clone --depth 1 https://github.com/kkoomen/qbr.git
$ cd qbr
$ python3 -m venv env
$ source ./env/bin/activate
$ pip3 install -r requirements.txt
運行時要注意每次運行前都要激活虛擬環境
$ source ./env/bin/activate
$ ./src/qbr.py
操作也非常簡單,可以先按L鍵循環切換語言到中文,C鍵進入/退出顏色校準模式。
掃描模式下按空格鍵保存識別好的一個面,6個面都識別好之後按esc就可以在終端裏看到結果了。
△沒有魔方只能拿照片測試一下
如果需要將結果翻譯成“人話”,則運行時加入參數“-n”即可。
解魔方的算法方面Qbr直接使用了開源的Kociemba算法庫,該算法可以在20步以內還原任意3階魔方。
那麼問題來了,如何將攝像頭掃描的圖像輸入給算法呢?
攝像頭如何識別魔方?
Qbr使用開源的計算機視覺庫OpenCV。
首先將圖像灰度化,稍微做一下模糊,然後用邊緣檢測識別出魔方小面的邊緣。
把所有邊緣加粗,使屬於一個邊緣的多條線可以合併。
將邊緣疊加到原始圖像上,使用OpenCV的approxPolyDP函數識別出閉合區域。
再去掉一些多餘的輪廓,就得到了魔方的所有小面。
金可明在此基礎上改進了形狀檢測算法,即使魔方小面帶有弧度、不是標準正方形也可以識別。
掃描好6個面後計算每個小面中顏色的平均值。
然後用CIDE2000算法計算出每個小面屬於哪種標準色。
最後按順序將顏色編碼合成爲一個字符串就可以作爲魔方算法的輸入了。
下一步,機器人
金可明出生於荷蘭,自學中文後來到中國留學。
除了Qbr外他還編寫過一個爲代碼自動生成文檔的Vim插件,並用文檔生成器(Documentation Generator)的英文字母開頭給插件命名爲“Doge”,獲得Github 500星好評。
作爲程序員的他看到這個擰魔方只需要不到1秒的機器人後決定自己也要做一個。
△ Jay Flatland於2016年發佈,0.9秒的成績打破了世界紀錄
現在軟件部分寫好了,讓我們期待他何時能做出機器人吧。
Qbr項目地址:
https://github.com/kkoomen/qbr
參考鏈接:
[1]http://programmablebrick.blogspot.com/2017/02/rubiks-cube-tracker-using-opencv.html
[2]https://www.youtube.com/watch?v=ixTddQQ2Hs4
— 完 —
推薦一波我好朋友的公衆號:
個人微信(如果沒有備註不拉羣!)
請註明:
地區+學校/企業+研究方向+暱稱
下載1:何愷明頂會分享
在「AI算法與圖像處理」公衆號後臺回覆:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經典工作的總結分析
下載2:終身受益的編程指南:Google編程風格指南
在「AI算法與圖像處理」公衆號後臺回覆:c++,即可下載。歷經十年考驗,最權威的編程規範!
下載3 CVPR2021
在「AI算法與圖像處理」公衆號後臺回覆:
CVPR
,即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文
點亮 ,告訴大家你也在看
本文分享自微信公衆號 - AI算法與圖像處理(AI_study)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。