OpenCV玩九宫格数独:预告篇

九宫格

数独源于18世纪的瑞士,又称九宫格,有九行、久列和九宫。玩家需要在九宫格中,根据已知的数字,利用逻辑和推理能力,填出所有的空格中应有的数字。填的时候要求每行、每列和每宫都要不重复地包含数字0-9。每行、每列和每宫中1-9都必须出现且只能出现一次,故称之为数独。

数独游戏考察的是解题者的观察能力和逻辑推理能力,虽然规则很简单,但是数字的排列方式却是包含千变万化,是一种锻炼思维的绝佳方式。有时候数独不光有数字的变化,还有颜色的变化,更难但趣味也更多。

在刚刚接触机器视觉的时候,我就想着用机器视觉来解数独。当时也做了一些尝试。但是当时只是做到了提取每一个九宫格和数字,由于当时初学能力有限,就搁置了。最近重新拾起,不是用C++,而是用Python,终于完整地把可以完整地用九宫格了。

今天这篇文章只能说是预告,因为最近空闲时间有限,而这个项目又不是简简单单就能说完的,所以我且利用空闲时间慢慢写,君且慢慢看。

流程

大致的流程是这样的

  • 九宫格数字提取
  • 数字识别
  • 数据收集和处理
  • kNN数字识别
  • 数独生成和求解

效果预览

1.数字提取

数字提取,就是在一张数独图片中提取出已知的数字

2.数字识别

数字识别需要训练kNN数字识别模型,就需要收集数据,进行数据处理之后训练模型。最终可以正确地识别九宫格中的数字。由于训练样本有限,所以现有模型也许只能完美的识别上图所示的九宫格。

3.求解数独并展示结果

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

python数字图像处理(17):边缘与轮廓

在前面的python数字图像处理(10):图像简单滤波 中,我们已经讲解了很多算子用来检测边缘,其中用得最多的canny算子边缘检测。

671
来自专栏文武兼修ing——机器学习与IC设计

MLP中实现dropout,批标准化MLP中实现dropout,批标准化

MLP中实现dropout,批标准化 基本网络代码 三层MLP 使用MNIST数据集 import torch as pt import torchvision...

3015
来自专栏人工智能头条

深度学习一种变相的马尔可夫链吗?

1784
来自专栏AlgorithmDog的专栏

遗传算法系列之二:“欺骗”深度学习的遗传算法

这篇博客主要介绍不同问题的遗传算法。 遗传算法是通用的全局优化算法,因此有很多的应用。有很多应用我是看不懂的,比如机器人步态优化。机器人...

2859
来自专栏专知

春节充电系列:李宏毅2017机器学习课程学习笔记26之结构化学习-序列标注 Sequence Labeling(part 2)

【导读】我们在上一节的内容中已经为大家介绍了台大李宏毅老师的机器学习课程的Structured learning-sequence labeling(part ...

2875
来自专栏Duncan's Blog

数据挖掘整理

2.1数据清洗:填写缺失值、光滑噪声数据,识别或删除离群点,并解决不一致性来“清理”数据

1003
来自专栏CDA数据分析师

【技术】SPSS因子分析

因子分析在各行各业的应用非常广泛,尤其是科研论文中因子分析更是频频出现。小兵也凑个热闹,参考《SPSS统计分析》书中的案例,运用SPSS进行因子分析,作为我博客...

2028
来自专栏智能算法

遗传算法如何模拟大自然的进化?

遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法...

39616
来自专栏塔奇克马敲代码

C语言中的atan和atan2

在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x)  他们返回的值...

742
来自专栏人工智能LeadAI

基于协同过滤的推荐引擎(理论部分)

记得原来和朋友猜测过网易云的推荐是怎么实现的,大概的猜测有两种:一种是看你听过的和收藏过的音乐,再看和你一样听过这些音乐的人他们喜欢听什么音乐,把他喜欢的你没听...

3135

扫码关注云+社区