OpenCV Android - 无法解析相应的JNI函数 [英] OpenCV Android - Cannot Resolve Corresponding JNI Function

查看:2558
本文介绍了OpenCV Android - 无法解析相应的JNI函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用Opencv设置Android Studio,具体步骤如下:






I'm trying to setup Android Studio with Opencv by following this tutorial outlined here: https://www.youtube.com/watch?v=OTw_GIQNbD8

I can get the result obtained by the person giving the tutorial but upon trying to actually use some of Opencv's functions I run into some trouble.

I am able to load the Opencv library but upon trying use some of the native functions such as "Imgcodecs.imread" I get the error: ".lang.UnsatisfiedLinkError: No implementation found for long org.opencv.imgcodecs.Imgcodecs.imread_1(java.lang.String)"

I believe I have tracked down the issue to the following:

[![enter image description here][1]][1]

It seems that Android Studio is unable to detect the native C++ code which I'm guessing should be picked up from jiniLibs folder I now have in app/src/main?

I've tried updating Android Studio to the latest stable build and I have fixed my file paths for my android SDK and NDK as having white-space can apparently affect the running of native code. The issue still persists.

I have been trying to fix this for the last 4 hours, any help would be greatly appreciated!

解决方案

FINAL EDIT: I've made a tutorial explaining how to install Opencv for Android along with SIFT/SURF algorithms - https://www.youtube.com/watch?v=cLK9CjQ-pNI

It appears that I have solved my issue with using the following file structure and dependencies. I can't say for sure how I got it to work but I believe if you copy my structure here then yours should work too.

Ensure that there are no spaces present in your file path to your Android SDK or NDK. Android Studio warns that this may cause issue when loading native code.

Place the folders containing the '*.so' files into /YOUR_PROJECT_ROOT/libs (You'll probably have to manually create this libs folder). All the other solutions online stating to put them into app/src/main/jniLibs did not work for me.

To include the openCVLibrary300, I imported it as a module using File->New->Import Module, the set the Source Directory to something like ..\OpenCV-android-sdk\sdk\java

Ensure build.gradle files in both the app and the imported library share the same min and max sdk version etc.

Sample code used to test - http://pastebin.com/2zzU5B9G

The sample code I've posted above ensures the libraries are loaded before using Opencv methods. It uses the Imgcodecs.imread() function that uses native code in C++ that was previously giving me the ".lang.UnsatisfiedLinkError: No implementation found for long org.opencv.imgcodecs.Imgcodecs.imread_1(java.lang.String)" error.

这篇关于OpenCV Android - 无法解析相应的JNI函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆