【问题标题】:how to solve TypeError: cv.Mat is not a constructor opencv.js?如何解决 TypeError: cv.Mat is not a constructor opencv.js?
【发布时间】:2019-09-09 07:23:24
【问题描述】:

当我想从我的相机检测 aruco 标记时,我在使用 opencv.js 时遇到了问题。每次我尝试使用该方法时

let image = new cv.imread('img');

我收到以下错误:

TypeError: cv.Mat is not a constructor
    at Object.matFromImageData (VM52998 opencv.js:55)

我尝试使用this question 来尝试解决我的问题。问题的解决方案是使用异步加载,在加载脚本时调用onOpenCvReady(),这将为cv 的onRuntimeInitialized 事件设置一个处理程序。处理程序应执行必要的操作。

<script>
        function onOpenCvReady() {
            cv['onRuntimeInitialized']=()=>{
                alert('OpenCV.js is ready.');
                // do all operations 
</script>
<script async src="<%= BASE_URL %>static/opencv.js" onload="onOpenCvReady();"></script>

但是,当我尝试使用问题中的解决方案时,我遇到了一个问题: 函数onOpenCvReady() 根本没有被调用。

另外,我等了超过 15 分钟(只是为了确定),然后尝试直接在控制台中使用 javascript let image = new cv.imread('img'); 行。我所做的每一步,我采取的每一步都会导致同样的问题。

【问题讨论】:

    标签: javascript html opencv vue.js


    【解决方案1】:

    回到第 1 格后,我重试了最基本的解决方案: 我只是将它添加到我的 HTML 页面,而不是所有写的 here

    <script src="<%= BASE_URL %>static/opencv.js" id="opencvjs"></script>
    

    这并没有直接起作用,但是在调试了我的代码的其他一些区域之后,我确保我的页面不包含其他错误(与此问题完全无关)。出于某种原因,我还没有进行调查并完全理解,加载 opencv.js 脚本时出现其他错误会中断加载过程。虽然听起来无关紧要,但这对 opencv 命令产生了巨大影响。

    最终的结果非常棒:

    let image = new cv.imread('img');
    console.log(image);
    

    输出:

    Mat {$$: {…}}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-15
      • 2018-05-24
      • 2021-06-22
      • 2018-09-01
      • 2018-11-14
      • 2021-07-02
      • 2021-08-12
      • 1970-01-01
      相关资源
      最近更新 更多