使用托管的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()工作?
答案 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准备就绪时执行