梦晨 发自 凹非寺
量子位 报道 | 公众号 QbitAI

魔方解不开了怎么办,让程序来帮你。

只需用摄像头把魔方的六个面扫描一遍就能直接给出还原步骤。

即使你的魔方不是标准配色或房间的照明情况特殊也可以通过颜色校准模式来识别。

这款荷兰小哥发布的3阶魔方解算器“Qbr”已经在GitHub上开源。

小哥还贴心的把魔方公式中的步骤代号翻译为人话,并且支持中文,可以直接按照描述操作。

中文是小哥自学的,他还给自己起了个中文名叫“金可明”。

解算结果大概是这样的。

步骤数: 20
复原教程: B2 U2 F' R U D' L' B' U L F U F2 R2 F2 D' F2 D R2 D21. 将魔方的后面旋转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

—  —

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

点这里????关注我,记得标星,么么哒~

加入AI社群,拓展你的AI行业人脉

量子位「AI社群」招募中!欢迎AI从业者、关注AI行业的小伙伴们扫码加入,与50000+名好友共同关注人工智能行业发展&技术进展

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见~

解魔方神器开源:摄像头看一眼,就能还原全步骤相关推荐

  1. 解魔方神器开源啦!摄像头看一眼,就能还原全步骤

    本文转载自程序员极客实验室. 魔方解不开了怎么办,让程序来帮你. 只需用摄像头把魔方的六个面扫描一遍就能直接给出还原步骤. 即使你的魔方不是标准配色或房间的照明情况特殊也可以通过颜色校准模式来识别. ...

  2. 牛逼!解魔方神器GitHub开源了!

    梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 魔方解不开了怎么办,让程序来帮你. 只需用摄像头把魔方的六个面扫描一遍就能直接给出还原步骤. 即使你的魔方不是标准配色或房间的照明情况特殊也 ...

  3. 自动解魔方机器人1 [算法篇]

    魔方机器人其实上个学期就已经做完了,参加了机器人大赛的创意组. 本来想写一个教程,一直没时间整理(其实是懒),这次先把我觉得比较重要的东西写一下,主要是为了记录一下我的制作过程和制作思路,给有同样兴趣 ...

  4. 小学生手写Python程序解魔方!这是高手,这绝对是高手!

    导读:最近,微博上看到一位孩子的爸爸,在晒其儿子手写程序解魔方的过程,看完后,觉得特别好玩.顿时有种再不学编程,连小学生都赶不上的危机感,哈哈哈!!! 作者:丁彦军 来源:恋习Python(ID:sl ...

  5. 小学生手写Python程序解魔方 这绝对是高手

    昨天,微博上看到一位孩子的爸爸,在晒其儿子手写程序解魔方的过程,看完后,觉得特别好玩.顿时有种再不学编程,连小学生都赶不上的危机感,哈哈哈!!! 整个详细过程如下: 太厉害了,又来了一个别人家的孩子, ...

  6. OpenAI机械手单手轻松解魔方,背靠强化学习+新技术ADR

    编译 | 夕颜 出品 | AI科技大本营(ID:rgznai100) [导读]10月15日,人工智能研究机构OpenAI发布了一条机械手单手解魔方的视频.这个自学式的类人机器人手臂名为 Dactyl, ...

  7. 瑞芯微RK PX30中文详解(带开源资料)简介

    瑞芯微RK PX30中文详解(带开源资料)简介 非常感谢您选择九鼎创展PX30开发平台,本文档讲述PX30开发平台的硬件资源,电路原理以及支持的接口等. PX30开发板是基于瑞芯微PX30的一款高端开 ...

  8. 解魔方机器人一秒搞定魔方

    机器人已经可以在一秒左右解魔方啦,是不是完胜人类? 魔方,在大部分人眼中可能就是一个儿时的玩具,殊不知它却是高智商人群的钟爱.解魔方不仅靠智商,其实还是有技巧的,掌握了规则你就可以很快地拼凑出来啦,甚 ...

  9. 硬盘mdr转换成gdp linux,Linux 命令学习神器!命令看不懂直接给你解释!

    原标题:Linux 命令学习神器!命令看不懂直接给你解释! 转自: 良许Linux 大家都知道,Linux 系统有非常多的命令,而且每个命令又有非常多的用法,想要全部记住所有命令的所有用法,恐怕是一件 ...

最新文章

  1. c++ Resource file and Source file
  2. Linux 下文件系统权限控制及管理
  3. 在Red Hat Linux中自动运行程序
  4. windows下的使用别人编译好的库文件进行安装xgboost
  5. Remote desktop manager共享账号
  6. python的赋值与参数传递(python和linux切换)
  7. c/c++整理--c++面向对象(4)
  8. 苹果手机屏幕镜像搜索不到电视_最全小米电视投屏教程(建议收藏)
  9. linux patch
  10. STM32全球唯一ID读取方法
  11. vue+nodejs+element 实现drawio绘图效果
  12. SQLServer数据库可疑的解决方法
  13. phpStudy JspStudy 2016 更新下载,新版支持php7.0
  14. 计算机网络体系结构(详图)
  15. Google浏览器设置不自动更新:关闭谷歌浏览器自动更新方法(总是自动更新提示失败)
  16. lopa分析_LOPA分析法之独立保护层浅析
  17. 爬虫中requests模块中session的实战应用
  18. Android 多语言支持
  19. 爱招飞软件开发工具与 Arduino 与 ESP32 的关系
  20. 车路协同-智慧出行(智慧交通解决方案)

热门文章

  1. 揭秘中国16大暴利行业
  2. 股票价格波动-c语言
  3. php 强制用户 退出,Spring Security 强制退出指定用户的方法
  4. bugkuCTF——社工篇
  5. 上海期货计算机公司排名,双创实践行 ——记2017级计算机与金融工程实验班同学参观上海期货交易所...
  6. 统计一篇英文文章单词个数
  7. Tomcat安装使用与部署Web项目的三种方法
  8. guacamole 源码_部署Guacamole跳板机平台
  9. erlang nif中文翻译手册
  10. PLU-分解以及求逆矩阵