1

我最近将我的 Android 项目从 OpenCV 2.4.10 移到了OpenCV 3.0

我使用以下代码静态初始化 OpenCV:

OpenCVLoader.initDebug();

当我运行我的应用程序时,我得到了这个异常:

java.lang.UnsatisfiedLinkError: Native method not found: org.opencv.imgcodecs.Imgcodecs.imread_1:(Ljava/lang/String;)J

Imgcodecs 是 OpenCV 3.0 中的一个新模块,它取代了 OpenCV 2.4.* 中的 Highgui,如果我是对的。

初始化时,我可以在 OpenCV 的日志中看到以下输出:

Version control:               2.4.10
...
To be built:                 core androidcamera flann imgproc highgui features2d calib3d ml objdetect video contrib photo java legacy ocl stitching superres ts videostab

根据以上信息,我猜 OpenCV 3.0 的 OpenCVLoader 仅初始化 2.4.10 中的旧模块。您可以看到它加载了不再需要的 highgui 模块。

这是新 OpenCV 的错误还是我遗漏了什么?是否有一些解决方法如何加载新模块?谢谢。

4

2 回答 2

1

似乎现在使用 23.6.2015 的更新版本工作。

这个提交似乎已经修复了这个错误,所以答案是这个问题可能是由 OpenCV 错误引起的。

于 2015-10-15T13:07:27.393 回答
0

我建议创建一个新项目,添加 opencv 静态版本,导入 build.gradle 并将版本从 2.4.* 更改为 3.0.* 我也是这样做的,我之前的版本是 2.4.9,迁移后是 3.0.0

To be Built: hal core flann imgproc ml photo video ***imgcodecs*** shape videoio ..

由于这在您的项目中很明显,因此您仍然使用 2.4 版。*

于 2015-12-13T07:32:20.257 回答