我想嘗試SDK附帶的示例代碼之一,即「tutorial-2-mixedprocessing」。餘按照這些步驟:AndroidStudio無法找到OpenCV標頭
1)導入項目 - >選擇的教程目錄
2)I將其命名爲「教程-2- mixedprocessing1」,左打勾3個選項(「在可能的情況更換罐& LIB源」和「創建搖籃式模塊名稱」)
3)警告:「在目前的插件已過時NDK一體化」我點擊「設置‘android.useDeprecatedNdk =真’在gradle.properties繼續使用目前的NDK整合「
4)導入模塊 - >選定的Java模塊這是在「C:\的SDK \的OpenCV-Android的SDK \ SDK \ java的」在我的情況下 - >左3複選框打勾
5)錯誤:原因:在C:\ Users \ c010 \ AppData \ Local \ Android \ Sdk中找不到哈希字符串'android-14'的目標安裝缺少的平臺和同步項目。我改變了compileSdkversion,buildToolsVersion和targetSdkVersion並同步。錯誤消失。
6-7)打開模塊設置 - >依賴關係添加Opencv模塊作爲模塊依賴關係。新增NDK位置(「C:\的SDK \ Android的NDK-R12-β2」在我的情況)
8)建立 - >使項目負責人錯誤:(2,33)opencv2 /核心/ core.hpp:沒有這樣的文件或目錄
在Eclipse中我會添加一些包含路徑,但我不知道如何在Android Studio中執行此操作。我以爲編輯Android.mk可以幫助:
我Android.mk是
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
ifdef OPENCV_ANDROID_SDK
ifneq ("","$(wildcard $(OPENCV_ANDROID_SDK)/OpenCV.mk)")
include ${OPENCV_ANDROID_SDK}/OpenCV.mk
else
include ${OPENCV_ANDROID_SDK}/sdk/native/jni/OpenCV.mk
endif
else
include ../../sdk/native/jni/OpenCV.mk
endif
LOCAL_MODULE := mixed_sample
LOCAL_SRC_FILES := jni_part.cpp
LOCAL_LDLIBS += -llog -ldl
include $(BUILD_SHARED_LIBRARY)
我改成了普通的絕對路徑
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include C:\SDKs\OpenCV-android-sdk\sdk\native\jni\OpenCV.mk
LOCAL_MODULE := mixed_sample
LOCAL_SRC_FILES := jni_part.cpp
LOCAL_LDLIBS += -llog -ldl
include $(BUILD_SHARED_LIBRARY)
沒有幫助。
我在「ifdef ...」行之前添加了'OPENCV_ANDROID_SDK:= C:\ SDKs \ OpenCV-android-sdk',結果相同。
我添加了'LOCAL_C_INCLUDES + = C:\ SDKs \ OpenCV-android-sdk \ sdk \ native \ jni \ include',結果相同。
我編輯看起來像
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "org.opencv.samples.tutorial2"
minSdkVersion 8
targetSdkVersion 8
ndk {
moduleName "mixed_sample"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile project(':openCVLibrary310')
}
我改變NDK托架如下gradle這個文件:
ndk {
moduleName "mixed_sample"
cFlags += "-I${file("C:/SDKs/OpenCV-android-sdk/sdk/native/jni/include")}".toString()
}
錯誤:錯誤:空IC:\的SDK \的OpenCV-Android的SDK \ sdk \ native \ jni \ include:無效參數
它不接受cppFlags 錯誤:(14,0)無法在co上找到屬性'cppFlags' [email protected]2。
線有一個名爲 'libsDir' 字符串。它在哪裏使用?隨着你的幫助和[這裏]的教程(https://codelabs.developers.google.com/codelabs/android-studio-jni/index.html?index=..%2F..%2Findex#0),它編譯,但現在我看到一些鏈接器錯誤(如'未定義引用'cv :: FastFeatureDetector :: create(int,bool,int)'')。 – jannarc
libsDir是存在第三方庫鏈接的目錄路徑。如果你不需要使用。你的鏈接問題是因爲你在gradle文件中沒有鏈接opnecv C++ .so文件。這個問題更加廣泛和困難。你可以嘗試這個鏈接,http://stackoverflow.com/questions/34701003/android-studio-linking-opencv-static-libraries,它沒有解決,但可能你會有更多的想法。 – uelordi