评论

小程序通过webassembly加载opencv.js

小程序通过webassembly加载opencv.js

测试在安卓下(Mate30 Pro)可以使用webassembly的相关函数,随即测试了opencv.js,通过对胶水代码的魔改(

1.如对无法使用的new Function,用固定的function加动态获取传入参数仿写

2.对某些函数读取外部文件,将FS改造,提前将文件通过小程序的FileSystemManager读入虚拟目录中

),经测试,可以使用opencv.js提供的API,面部、眼睛检测速度大约在15帧/秒。

现提供代码给大家增添思路:

https://github.com/leo9960/opencv.js-wechat

最后一次编辑于  06-12  
点赞 3
收藏
评论

5 个评论

  • 百川
    百川
    07-15

    你好 请问有方法不使用胶水js吗,感觉太臃肿了

    我看emscripten现在也可以只生成一个.wasm 但有可能需要导入wasi才能用

    (import "wasi_snapshot_preview1" "proc_exit" (func $wasi_snapshot_preview1.proc_exit (type $t1)))

    但感觉目前小程序应该还不支持wasi

    07-15
    赞同
    回复 2
  • 懒得起名
    懒得起名
    07-02

    你好,请问一下:

    1. 只能通过 canvas和camera读取图片嘛?imread我好像没办法通过id读取到<image>里面的图片。
    2. 还有imread通过URL读取数据时,是不是先写入canvas再读取的?这个就要求canvas的大小和图片一样?
    3. 我通过wx.request读取到了图片的 array buffer 数据,想用cv.matFromImageData转换,但是参数里的width和height好像又不是图片的长宽?frame.width是“图像数据矩形的宽度”。
    4. 用imshow我没有办法通过id输出到指定的canvas,是我的操作不对嘛。。?


    烦请赐教!谢谢!

    07-02
    赞同
    回复 3
  • 懒得起名
    懒得起名
    07-02

    非常感谢!!!

    07-02
    赞同
    回复
  • way
    way
    06-24

    多谢🙏, 你的源文件是c++或者c写的, 然后用emscripten转成wasm吗? 我的理解是

    1, 你写的c++,emscripten -> wasm.js

    2, opencv c++, emscripten -> opencv.wasm

    3, wasm.js 调用opencv.wasm

    是这样吗?谢谢


    06-24
    赞同
    回复 3
  • way
    way
    06-24

    你好, 能问一下你的wasm.js是怎么生成的吗?wasm.init({url..是你自定义的方法?


    06-24
    赞同
    回复 1
登录 后发表内容