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

首先,什么是WebAssembly?

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

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

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

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

Suduko solver

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

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

核心步骤:

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

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

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

4、剔除网格线

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

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

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 formatlet 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 formatif let Some(solution) = sudoku.solve_unique() {// print the solution in line formatprintln!("{}", solution);
// or return it as a byte arraylet cell_contents: [u8; 81] = solution.to_bytes();}

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

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

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

更多#跨学科·人工智能
粉丝福利 
进群查看,有惊喜!
(0)

相关推荐