找图报错一运行就报下面的错误是什么原因呀

开始运行[[remote]mian.js]
19:45:15.484/E: No implementation found for long org.opencv.core.Mat.n_Mat() (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__)

java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat() (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__)
at org.opencv.core.Mat.n_Mat(Native Method)
at org.opencv.core.Mat.<init>(Mat.java:23)
at com.stardust.autojs.core.opencv.Mat.<init>(Mat.java:37)
at com.stardust.autojs.core.image.ImageWrapper.getMat(ImageWrapper.java:106)
at com.stardust.autojs.runtime.api.Images.findImage(Images.java:290)
at java.lang.reflect.Method.invoke(Native Method)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:206)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:211)
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1879)
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1061)
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:90)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:380)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3869)
at org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:103)
at com.stardust.autojs.engine.RhinoJavaScriptEngine.doExecution(RhinoJavaScriptEngine.kt:74)
at com.stardust.autojs.engine.JavaScriptEngine.execute(JavaScriptEngine.java:20)
at com.stardust.autojs.engine.LoopBasedJavaScriptEngine.access$001(LoopBasedJavaScriptEngine.java:21)
at com.stardust.autojs.engine.LoopBasedJavaScriptEngine.lambda$execute$0$com-stardust-autojs-engine-LoopBasedJavaScriptEngine(LoopBasedJavaScriptEngine.java:46)
at com.stardust.autojs.engine.LoopBasedJavaScriptEngine$$ExternalSyntheticLambda0.run(D8$$SyntheticClass)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at com.stardust.autojs.engine.LoopBasedJavaScriptEngine.execute(LoopBasedJavaScriptEngine.java:65)
at com.stardust.autojs.engine.LoopBasedJavaScriptEngine.execute(LoopBasedJavaScriptEngine.java:38)
at com.stardust.autojs.execution.LoopedBasedJavaScriptExecution.doExecution(LoopedBasedJavaScriptExecution.java:42)
at com.stardust.autojs.execution.RunnableScriptExecution.execute(RunnableScriptExecution.java:43)
at com.stardust.autojs.execution.RunnableScriptExecution.execute(RunnableScriptExecution.java:37)
at com.stardust.autojs.execution.RunnableScriptExecution.run(RunnableScriptExecution.java:31)
at java.lang.Thread.run(Thread.java:761)
19:45:15.487/V:

requestScreenCapture();
var wx = images.read("./mig/2.png");
//返回桌面
home();
//截图并找图
sleep(2000)
var p = findImage(captureScreen(), wx);
if(p){
toast("找到了: " + p);
}else{
toast("未找到");
}
一运行就报错

last edited by 救赎呀

@救赎呀 问题出现在open cv,需要先启用,再调用

我也遇到过opencv报错。前一天运行正常,第二天就opencv报错。怎么改程序都没用,结果重启手机就正常了。怀疑是内存泄漏。 可以在程序最后加上images.releaseAll();释放已读取的图像资源,以避免内存泄漏。

另外,我把你的报错问了下ChatGPT,回答如下:
这个错误是由于缺少OpenCV库的实现引起的。OpenCV是一个用于计算机视觉和图像处理的开源库,你的代码中涉及到了OpenCV的相关操作,但系统找不到相应的库来执行这些操作。

要解决这个问题,你需要确保在你的项目中包含了正确的OpenCV库文件,并且这些库文件在运行时能够被正确加载。

以下是一些可能的解决方法:

确保你已经正确地配置了OpenCV库。这包括将OpenCV库文件添加到项目的依赖中,并将其正确地链接到你的代码中。具体的配置步骤取决于你使用的开发环境和构建工具。

检查你的设备上是否已经正确安装了OpenCV库。如果你是在移动设备上运行代码,可以尝试在设备上安装OpenCV Manager应用程序,并确保它是最新版本。

如果你已经正确配置了OpenCV库但仍然出现问题,可能是由于库文件的加载路径不正确。你可以尝试在代码中显式指定库文件的加载路径,以确保系统可以找到它们。例如,在你的代码中添加以下语句:

System.loadLibrary("opencv_java");

请注意,这只是一个示例,实际的库文件名称可能因你使用的OpenCV版本和平台而有所不同。

通过采取这些步骤,你应该能够解决"java.lang.UnsatisfiedLinkError: No implementation found"的错误并成功运行你的代码。