Android 的 OpenCV 3.0 - 静态初始化不加载新模块
OpenCV 3.0 for Android - static initialization not loading new modules
我最近将我的 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 的错误还是我遗漏了什么?是否有一些解决方法如何加载新模块?谢谢
现在似乎可以使用 2015 年 6 月 23 日的更新版本。
错误似乎已被 this commit 修复,所以答案是问题可能是由 OpenCV 错误引起的。
我建议新建一个项目,添加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 版。*
我最近将我的 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 的错误还是我遗漏了什么?是否有一些解决方法如何加载新模块?谢谢
现在似乎可以使用 2015 年 6 月 23 日的更新版本。
错误似乎已被 this commit 修复,所以答案是问题可能是由 OpenCV 错误引起的。
我建议新建一个项目,添加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 版。*