梦晨报道,源自凹非寺量子位——公众号QbitAI
当魔方陷入混乱,无需担心,程序将助你一臂之力。
通过摄像头的轻松扫描,六面魔方的还原步骤便即刻呈现在你眼前。
无论魔方配色是否标准,或是房间照明情况如何,都能通过颜色校准模式准确识别。
荷兰发明家推出的这款3阶魔方解算器“Qbr”,已在GitHub上公开了源代码。
开发者还特别将复杂的魔方公式步骤翻译成通俗易懂的中文,并支持中文操作,让每个步骤都清晰易懂。
值得一提的是,中文并非他的母语,这位开发者自学了中文,并取了个中文名——金可明。
解算结果大致如下。
使用Qbr,你的电脑需安装Python3、Git以及摄像头。
使用说明如下:
在操作前请确保激活虚拟环境。
通过按L键,你可以轻松切换到中文界面;而C键则用于进入或退出颜色校准模式。
在扫描模式下,按下空格键可保存识别好的一个面,当六个面都识别完毕后,按esc键即可在终端看到结果。
(注:若无实体魔方,可用图片进行测试)
若需将解算结果以更易理解的方式呈现,运行程序时加入参数“-n”。
Qbr在算法方面采用了开源的Kociemba算法库,此算法能在20步内还原任意3阶魔方。
那么,如何将摄像头捕捉的图像数据输入给算法处理呢?
这就要借助于开源的计算机视觉库OpenCV了。
图像经过灰度处理和模糊化后,利用边缘检测识别出魔方小块的边缘。
进一步处理边缘信息,使其合并并叠加到原始图像上。然后运用OpenCV的approxPolyDP函数识别出闭合区域。
再经过一些多余轮廓的去除,就能准确获取魔方的所有小块信息。
金可明在此基础之上进一步改进了形状检测算法,即使魔方小块带有弧度或非标准正方形也能准确识别。
完成六个面的扫描后,程序会计算每个小块中颜色的平均值。
接着使用CIDE2000算法为每个小块确定其所属的标准颜色。
将这些颜色编码按顺序合成为一个字符串,即可作为魔方算法的输入。
访问金可明的GitHub页面
金可明来自荷兰,自学中文后赴留学。除了Qbr外,他还开发了一个为代码自动生成文档的Vim插件“Doge”,此插件因获得Github 500星好评而广受赞誉。
作为一名程序员,他在看到只需不到1秒就能完成魔方打乱的机器人后,决定自己也制作一个。
(注:Jay Flatland于2016年以0.9秒的成绩打破了世界纪录)
现在软件部分已准备就绪,让我们期待他何时能完成机器人的制作吧。