javascript - 如何解决 TypeError : cv. Mat is not a constructor opencv.js?

标签 javascript html opencv vue.js

当我想从我的相机检测 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'); .我所做的每一步,我采取的每一步都会导致同样的问题。

最佳答案

回到方 block 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 {$$: {…}}

关于javascript - 如何解决 TypeError : cv. Mat is not a constructor opencv.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57849449/

相关文章:

android - 用于安卓安装的OpenCV

python - 我应该使用什么 OpenCV 跟踪 API 来跟踪正在运行的细胞?

javascript - HTML、CSS 和 JS 动画多个进度条

javascript - div 元素提供了哪些不在section 元素中的功能?

jquery - 使用 Jquery 弹出图片库

javascript - 使用 Webpack 4 和 MiniCssExtractPlugin 未将 CSS 添加到/dist 文件夹

algorithm - OpenCV 中的人脸识别器

javascript - JavaScript 函数中的代码属性

javascript - AngularJs 和 Facebook 评论

javascript - jQuery .append() 不同步?