无法从函数访问opencv.js属性和方法

时间:2019-03-20 06:51:58

标签: javascript opencv

使用托管的opencv.js,我有以下简单的html文件:

<!DOCTYPE html>
<html>
  <head>
    <script
      async
      src="https://docs.opencv.org/master/opencv.js"
      onload="onOpenCvLoaded();"
      type="text/javascript"
    ></script>
  </head>
  <body>
    <script>
      function onOpenCvLoaded() {
        console.log(cv);
        test(cv);
      }
      function test() {
        console.log(new cv.Mat());
      }
    </script>
  </body>
</html>

我希望在控制台中看到一个新的Mat实例,但是我得到了:

Uncaught TypeError: cv.Mat is not a constructor
    at test (test.html:18)
    at onOpenCvLoaded (test.html:15)
    at HTMLScriptElement.onload (test.html:9)
test    @   test.html:18
onOpenCvLoaded  @   test.html:15
onload  @   test.html:9

但是,如果我直接在控制台中输入,new cv.Mat()会起作用。里面发生了什么,如何在test函数中使新的cv.Mat()工作?

2 个答案:

答案 0 :(得分:0)

我找到了提供答案的链接:https://dev.to/kjunichi/requireopencvjs-is-not-enough-for-using-opencvjs-8ff

cv完全初始化后执行一个函数:

cv['onRuntimeInitialized']=()=>{
          let mat = new cv.Mat();
          console.log(mat.size());
          mat.delete();
};

答案 1 :(得分:0)

此外,您可以在加载opencv.js文件时使用onload函数,例如function onLoad(){ onRuntimeinitialized = main;

您的主要功能将在opencv准备就绪时执行