完全可以在C++中使用,必须使用JNI才能让java代码调用native代码。
下载 Opencv-android-sdk 后,您只能导入您需要的头文件和“.a”文件。 java 文件是可选的,提供给不懂 C++ 的人。
比如java类CascadeClassifier,最后调用native函数,你也可以这样,其实就是JNI:
// C++: CascadeClassifier::CascadeClassifier()
private static native long CascadeClassifier_0();
// C++: CascadeClassifier::CascadeClassifier(string filename)
private static native long CascadeClassifier_1(String filename);
// C++: void CascadeClassifier::detectMultiScale(Mat image, vector_Rect& objects, double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0, Size minSize = Size(), Size maxSize = Size())
private static native void detectMultiScale_0(long nativeObj, long image_nativeObj, long objects_mat_nativeObj, double scaleFactor, int minNeighbors, int flags, double minSize_width, double minSize_height, double maxSize_width, double maxSize_height);
private static native void detectMultiScale_1(long nativeObj, long image_nativeObj, long objects_mat_nativeObj);
// C++: void CascadeClassifier::detectMultiScale(Mat image, vector_Rect& objects, vector_int rejectLevels, vector_double levelWeights, double scaleFactor = 1.1, int minNeighbors = 3, int flags = 0, Size minSize = Size(), Size maxSize = Size(), bool outputRejectLevels = false)
private static native void detectMultiScale_2(long nativeObj, long image_nativeObj, long objects_mat_nativeObj, long rejectLevels_mat_nativeObj, long levelWeights_mat_nativeObj, double scaleFactor, int minNeighbors, int flags, double minSize_width, double minSize_height, double maxSize_width, double maxSize_height, boolean outputRejectLevels);
private static native void detectMultiScale_3(long nativeObj, long image_nativeObj, long objects_mat_nativeObj, long rejectLevels_mat_nativeObj, long levelWeights_mat_nativeObj);
// C++: bool CascadeClassifier::empty()
private static native boolean empty_0(long nativeObj);
// C++: bool CascadeClassifier::load(string filename)
private static native boolean load_0(long nativeObj, String filename);
// native support for java finalize()
private static native void delete(long nativeObj);