簡體   English   中英

完全在C ++中使用的OpenCV Android

[英]OpenCV Android using entirely in c++

我注意到github中的大多數Android示例在Java中都使用了opencv。 我現在在iOS中有一個可運行的應用程序,我盡力將opencv調用與橋接頭分開。

在Android中有可能做同樣的事情嗎? 我注意到像這里的CascadeClassifier這樣的opencv檢測器都是用Java而不是c ++編寫的。

我可以在Android中取得與iOS一樣的效果嗎?

您可以完全在C ++中使用,並且必須使用JNI來讓Java代碼調用本機代碼。

下載Opencv-android-sdk之后,您只能導入所需的頭文件和“ .a”文件。 Java文件是可選的,為不了解C ++的用戶提供。
例如,java類CascadeClassifier最終稱為本機函數,您也可以像這樣進行操作,實際上是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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM