2015-01-05 66 views
0

所有的源代碼已經發布?我的opencv版本是2.4.9。我已經整理了我的項目,自己編寫了
Android.mk。最後我運行了面部檢測演示,並得到了「未找到Native方法:org.opencv.objdetect.CascadeClassifier.CascadeClassifier_1:」類似的東西。我搜索整個opencv源,但我找不到Java_org_opencv_objdetect_CascadeClassifier_CascadeClassifier_1或類似的東西。我無法在jni文件夾中找到opencv android sdk的Java_org_opencv_objdetect_CascadeClassifier?

+0

從CV Android SDK中Mat.java引起的,那些本機方法的源代碼未找到: // C++:墊::墊() private static native long n_Mat(); // C++:Mat :: Mat(int rows,int cols,int type) private static native long n_Mat(int rows,int cols,int type); // C++:Mat :: Mat(Size size,int type) private static native long n_Mat(double size_width,double size_height,int type); – user2458630

回答

0

我不知道通過you.But本機方法不能發現的具體問題是本地方法的常見原因error.Possible未發現有

1)在C++函數名和Java函數名的類型不匹配。C++函數名稱必須爲 格式Java_PackageName_classname_functionname

2.)您在調用opencv庫之前調用函數。

如果你再無法找到,請分享您的代碼

+0

謝謝!並且你說我確信這兩點是正確的。現在我的問題是我無法找到cv android sdks的本地代碼,例如下面(來自Mat.java): // C++:Mat :: Mat() private static native long n_Mat(); // C++:Mat :: Mat(int rows,int cols,int type) private static native long n_Mat(int rows,int cols,int type); // C++:Mat :: Mat(Size size,int type) private static native long n_Mat(double size_width,double size_height,int type); – user2458630

+0

您是否在oncreate方法中使用了mat對象初始化?請不要這樣做。在onResume方法中調用opencv庫。之後,您可以調用Mat對象,因爲它使用來自opencv管理器的opencv庫.Opencv管理器是必須安裝的不同應用程序用於應用程序的異步初始化 – Mirza

0

樣本問題困擾了我很長一段時間。

(我的APK運行以及採用Android工作室使用Android.mk Android系統到complie(把源文件包/應用/「APK名」的時候安裝它,))

我只是重播「libopencv_java3 .so「文件通過」\ OpenCV-android-sdk \ sdk \ native \ libs \ arm64-v8a \ libopencv_java3.so「,因爲這兩個文件的大小是不同的,那麼這個問題就解決了。

作爲結果,這個問題應以 「libopencv_java3.so」

相關問題