梦晨 发自 凹非寺
量子位 报道 | 公众号 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

最后

转发文章并关注公众号:前端开发博客,回复 1024,领取前端进阶资料

  1. 回复「电子书」领取27本精选电子书

  2. 回复「加群」加入前端大神交流群,一起学习进步

  3. 回复「面试」获取 面试 精选文章

分享和在看就是最大的支持❤️

牛逼!解魔方神器GitHub开源了!相关推荐

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

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

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

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

  3. 牛逼闪闪的腾讯开源运维系统平台!

    蓝鲸智云(蓝鲸)是腾讯游戏运营部"腾讯智营"下的一个子品牌,它是一套基于 PaaS 的技术解决方案,提供了完善的前后台开发框架.调度引擎与公共组件等模块,可以帮助业务的产品和技术人 ...

  4. 据说这是史上最牛逼的可视化神器

    全世界只有3.14 % 的人关注了 数据与算法之美 我们粉丝里面有很多小伙伴喜欢玩数据分析,粗略估计有几千人.数据分析离不开数据可视化.比如我们前面介绍过pandas画图,matplotlib画图,p ...

  5. 滴滴技术牛逼吗?看它开源了哪些有意思的项目

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作为卓越的一站式移动出行和生活平台,滴滴在亚洲.拉美和澳洲为超过5 ...

  6. 牛逼!有人在 GitHub 上把 Windows 95 做成了一款软件,可玩扫雷和纸牌!

    公众号关注 "GitHubDaily" 设为 "星标",每天带你逛 GitHub! 6 秒重温 Windows95 开机画面 "看到 Win95,再看 ...

  7. 史上最牛逼的导航网站(开源免费)

    ➡️ www.webstack.cc - 网址导航 项目开源地址: https://github.com/WebStackPage/WebStackPage.github.io 内容均由viggo收集 ...

  8. Python史上最牛逼的可视化神器

    数据分析离不开数据可视化.比如我们前面介绍过pandas画图,matplotlib画图,pyecharts画图当然还有Tableau,今天推荐一款更牛的可视化神器,主要是这款神器的画出来的图很漂亮,色 ...

  9. 【ArcGIS风暴】最牛逼空间数据批处理神器来了:用户自定义工具箱GeoStorm.tbx

    [Warming up]在学习和工作的过程中,作者曾写过很多采用ArcGIS模型构建器(Model Builder).Python代码等批处理方法(感兴趣的GISers可以去[测绘地理信息Big风暴专 ...

最新文章

  1. 广告条随滚动条的移动而移动
  2. oracle有一百个人围一圈报数,案例:Oracle创建表时报session超过最大值 ORA-00018 证明递归ses...
  3. golang中图片转base64_golang base64编码
  4. 知乎用户和龙鹏-言有三:计算机视觉应该怎样入门?
  5. Android Weekly Notes Issue #220
  6. linux系统终端介绍
  7. Java最大公约数和最小公倍数的求法(辗转相除法)
  8. sonar:默认的扫描规则
  9. LC 数组与字符串 - 两数之和
  10. c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...
  11. 生活小妙招:办公室如何查看自己电脑已连接的无线网密码,记得收藏
  12. [CGAL] CGAL的世界-Kernel内核、Traits特征类
  13. 圆形矢量场field driven strength效果
  14. C语言2009选择题答案,全国2009年10月自学考试C加加程序设计试题
  15. 可乐要加冰才好喝啊---装饰模式
  16. 逆水寒2021最新服务器,《逆水寒》2021上半年大事记:养娃带娃乐趣多,新职业新玩法不断更新...
  17. android 功能页面设计,50个优秀用户体验的手机界面设计(APP UI DESIGN)
  18. vue手机端回退_从外链回退到vue应用不触发生命周期、beforeRouterEnter等钩子函数的问题...
  19. POI给WORD添加水印(亲测可用)
  20. scrapinghub 爬取amztracker页面信息

热门文章

  1. 拟推荐全省文物系统先进_全国先进集体事迹材料 全国文化系统先进集体拟推荐对象简要事迹材料 精品...
  2. log4j2 pattern详解
  3. 5分钟内完成Python键盘记录程序
  4. [读书笔记]日本蜡烛图技术 阅读笔记
  5. java 集合分组_java List 如何进行分组
  6. Java程序完形填空题_完形填空:-_JavaDeveloper-51CTO博客
  7. 如何使用javascript制作一个网页端3D贪吃蛇游戏(附源码及链接)
  8. 暗影格斗3显示无服务器,暗影格斗3总是显示无法连接网络
  9. 同一个module里面多个initial是并行的吗
  10. Tensorflow2.0深度学习入门与实战(日月光华)(学习总结1)