本文转载自程序员极客实验室。

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

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

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

这款荷兰小哥发布的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秒的成绩打破了世界纪录

现在软件部分写好了,让我们期待他何时能做出机器人吧。

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. 魔方机器人需要特制魔方吗_解魔方的机器人攻略18 – 魔方快速算法

    我们的快速魔方算法要隆重登场了,在此缺席感谢一下来自Netherlands的Jaap Scherphuis同学.看前面这个页面的第三名. 魔方表示法 咱们先看一串天书般的字母:UF UR UB UL ...

  8. 《看聊天记录都学不会C语言?太菜了吧》(12)循环有多容易?你看一眼就怀...

    好消息2020年4月13日晚7.30我在CSDN开播,等你来聊天 预约连接:https://live.csdn.net/room/A757291228/MJWK0Gem 本系列文章将会以通俗易懂的对话 ...

  9. OpenAI“单手解魔方”被公开质疑,Gary Marcus称七大问题涉嫌误导

    全世界只有3.14 % 的人关注了 青少年数学之旅 近日,"OpenAI的机器手在4分钟内单手成功还原魔方"引起刷屏,然而,这一成就被著名机器学习怀疑论者马库斯质疑了,马库斯逐条列 ...

最新文章

  1. 微软安全新闻聚焦-双周刊第三十四期
  2. 织梦cms php,织梦,cms,php,采集类
  3. linux中通常使用 键来终止命令运行,【单选题】Linux中通常使用( )键来终止命令运行A. Ctrl+c B. Ctrl+d C. Ctrl+k D. Ctrl+f...
  4. ROS学习笔记三:编写第一个ROS节点程序
  5. LeetCode算法系列_0862_和至少为K的最短子数组
  6. 0428 团队项目2.0
  7. nametuple用法(转)
  8. 分享-动态性能表详解
  9. 实验四+040+薛龚
  10. 威纶通定时循环操作宏_相同功能带定时器的PLC程序怎么简化?
  11. 电脑重装系统后如何把网站设为首页
  12. b. c 语言中有调用关系的所有函数都必须放在同一源程序文件中.,第六章函数-选择题...
  13. python画公主_【图片】来几张公主的手绘【勇敢的公主吧】_百度贴吧
  14. 基于西门子S7-1200PLC的步进电机控制
  15. python中list的运算_使用Python列表实现向量运算
  16. 22东南网安专硕上岸经验贴
  17. ANSYS学习5——单元的选择
  18. es6 class 跟普通function的区别
  19. 爬虫——把jason格式用pandas化成dataframe
  20. 在Photoshop中设计一个漂亮的下拉按钮

热门文章

  1. 复杂多边形的三角剖分
  2. 如何一键重装Win10系统图文教程
  3. 命名实体如何进行概念消歧?
  4. 第三方对接-支付宝支付
  5. 手写简易版Vue源码之数据响应化的实现
  6. 智能客服工单系统与工单管理系统的区别
  7. 判断一个点是否在闭合曲线内
  8. Nodejs全方位入门
  9. 【顿悟】会者定离,一期一祈,勿怀忧也,世相如是.
  10. 关于文件关联的图标不能正常显示