总之也是为了扩宽技术面吧。。。我也不知道为什么就想试试了,就酱。
参考阅读:极客时间《WebAssembly入门课》
安装wasm的编译器Emscripten。Emscripten 是一个“源到源”语言编译器工具集,这个工具集可以将 C/C++ 代码编译成对应 JavaScript 代码。
参考:Emscripten在Windows上安装
https://www.cnblogs.com/8335IT/p/17693076.html
按照网上的教程git下载完后,执行emsdk.bat update 这些命令,只返回一个空行,没有任何反馈的,或者报错:emsdk.bat : 无法将“emsdk.bat”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
看下有木有安装python,以及环境变量里有木有Python
python安装:https://zhuanlan.zhihu.com/p/623374236?utm_id=0
然后重新开一个命令窗口,如果执行不了就使用管理员权限开。
执行: emsdk install --global latest
emsdk activate latest
设置环境变量 emsdk_env.bat
emcc -v 可以看到版本号了
实践一个视频滤镜处理
嗯。。是的,就直接开始实践了。
先简单地复习一下线性代数,然后了解几个基本概念
当我们说到“为视频添加滤镜”时,这一操作里的“滤镜”,主要是指什么?这是 DIP(Digital Image Processing数字图像处理)领域中的一个基本概念 —— “卷积”。
从一个直观的角度来看,对图像进行卷积的过程,其实就是通过一个具有固定尺寸的矩阵(也可以理解为二维数组),来对该图像中的每一个像素点的值进行重新计算的过程。这个过程通常也被称为“滤波”。
而我们现在需要使用一个固定尺寸的矩阵去处理像素点,这个矩阵一般被称为“卷积核”。每一种类型的卷积核都会对图像产生不同的滤镜效果。
卷积的计算过程也十分简单,主要分为以下几个步骤。
- 首先将卷积核矩阵翻转 180 度。然后将图像上除最外一圈(考虑到“边缘效应”,我们选择直接忽略边缘像素)的其他各像素点的灰度值,与对应的卷积核矩阵上的数值相乘。
- 然后对所有相乘后得到的值求和,并将结果作为卷积核中间像素点对应图像上像素的灰度值。(这里提到的“灰度值”也可以由每个像素点的各 RGB 分量值来进行代替)。
- 重复上述步骤,直至图像中所有其他像素点均完成此计算过程。
RGB分量的最低为0,最高为255,如低于0则相当于=0,255同理。
上手。。上不了一点,线代什么的头大,当年只考了64分的我竟然在这里看线代(挠头),c++更是已经还给老师了,啊。。。
好吧这个初上手就到这里。