前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AR实时求解数独 |Mixlab混合现实

AR实时求解数独 |Mixlab混合现实

作者头像
mixlab
发布2021-01-25 10:32:48
4240
发布2021-01-25 10:32:48
举报
文章被收录于专栏:MixLab科技+设计实验室

首先,什么是WebAssembly?

我们需要知道它到底是什么!

WebAssembly是一种可以让C/C++这些非JavaScript语言编写的代码在浏览器上运行,是一种在web上运行二进制文件的技术标准。

就前端来说,它因为支持了更多的语言,进而可以创造出更多的可能。就后端来说,配置过Opencv或其他C++库的小伙伴都知道,一个环境的部署会有多么的繁琐以及对各种库的高依赖性。

通过这种技术手段,我们就可以通过Js在浏览器上十分简单的调用Opencv的函数库,实现人脸识别、数字识别等功能。

Suduko solver

这是一个Suduko(数独)解算器的项目,通过Rust调用Opencv,Tensorflow的函数库实现实时的识别解算,非常有趣。

在图像中定位数独谜题,解决谜题然后将解决方案呈现回原始图像的步骤

核心步骤:

1、利用自适应阈值函数定位轮廓边缘,生成黑白图像

2、通过提取轮廓,找出为数独网格的四边形轮廓

3、利用逆透视变换,将侧放的网格渲染成正方形的网格

4、剔除网格线

5、利用卷积神经网络识别数字

6、利用基于Rust语言编写的程序,求解数独

代码语言:javascript
复制
use sudoku::Sudoku;

// Sudokus can be created from &str's in both block or line formats or directly from bytes.
// here, an example in line format
let sudoku_line = "...2...633....54.1..1..398........9....538....3........263..5..5.37....847...1...";

let sudoku = Sudoku::from_str_line(sudoku_line).unwrap();

// Solve, print or convert the sudoku to another format
if let Some(solution) = sudoku.solve_unique() {
// print the solution in line format
println!("{}", solution);

// or return it as a byte array
let cell_contents: [u8; 81] = solution.to_bytes();
}

7、进行透视变换,将求解后的数字投影回图像上

就这样,一个涵盖Opencv、tensorflow、Rust、JS等技术的project就完成了,最终经过测试,整体处理时间大约在70毫秒。

Docker的联合创始人之一Solomon Hykes在Twitter上这样评价过WASI,体现了WebAssembly的价值。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无界社区mixlab 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档