2016-01-11 35 views
1

我想運行一個示例程序與opencv的圖像採集。但是我得到了構建錯誤。Android gradle生成錯誤 - 算法:沒有這樣的文件或目錄。 (在opencv)

D:\Work\Code\Practice\Android\CornerDetector\app\src\main\jni\opencv2\core\base.hpp 
Error:(53, 21) algorithm: No such file or directory 

enter image description here

Android.mk

LOCAL_PATH:= $(call my-dir) 
include $(CLEAR_VARS) 
include D:\Work\Code\Addons\ZAndroid\OpenCV-android-sdk\sdk\native\jni\OpenCV.mk 

    LOCAL_MODULE := mCameraSlider 

    LOCAL_SRC_FILES := src/driver_android_slider.c \ 
         src/driver_android_camera.cpp \ 
         src/driver_android_display.cpp \ 
         src/main.c      \ 
         src/mCameraSlider.c   \ 
         src/corner/myCorners.c   \ 

    LOCAL_C_INCLUDES += $(LOCAL_PATH)\src\include \ 
         $(LOCAL_PATH)\src\corner \ 


    LOCAL_LDLIBS += -llog -ldl 
    include $(BUILD_SHARED_LIBRARY) 

Application.mk

APP_STL := gnustl_static 
APP_CPPFLAGS := -frtti -fexceptions 
APP_PLATFORM :=android-9 

一些司機爲Android相機使用opencv2 /核心/ core.hpp,因此opencv2目錄是在jni下的地方。

#include <jni.h> 
#include <stdlib.h> 
#include <android/log.h> 
#include <opencv2/core/core.hpp> 

extern JavaVM *cachedJvm; 
extern jobject cachedActivityObj; 
extern jclass cachedMainActivityCls; 

typedef struct _CameraContext 
{ 
    jmethodID CameraGetInputBufferID; 
    jmethodID InitCameraID;  

    int Width; 
    int Height; 
    int Location; 

    cv::Mat Temp; 
    cv::Mat Repo; 
} CameraContext; 

在做NDK編譯得到這個: enter image description here

我覺得我做錯了什麼,使用OpenCV的,也許android.mk但不能肯定。 請幫忙。

UPDATE:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     applicationId "com.mohantysolutions.cornerdetector" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:support-v4:23.1.1' 
    compile project(':libraries:opencv') 
} 
+0

讓我看看你的Gradle構建文件 –

回答

3

問題是我錯過了gradle中的配置以包含jni srcDir。 一旦我將下面的代碼添加到gradle中,一切正常。

sourceSets.main{ 
    jni.srcDirs = [] 
    jniLibs.srcDir 'src/main/libs' 
} 

我希望這可能會有助於某人。

+0

這解決了構建它的問題。但該應用程序崩潰。 –

0

既然你沒有提供的搖籃構建文件,所以我根據你提供的錯誤信息猜測的解決方案。

由於添加了較新的Camera API,Open Cv無法在較新的Android SDK上正常工作。並且直到現在,Open CV並未更新以用於較新的SDK。

所以,如果你用android SDK版本23編譯你的APP,那麼你有這個問題。

嘗試選擇使用舊版Camera API而不是新版本的任何SDK。

+0

你是對的,構建gradle的目標是sdk版本23,我可以更改爲更低的sdk並給你反饋。 – MKMohanty

+0

好的,如果更改後有錯誤,請從SDK Manager下載較舊的sdks,然後創建一個新的應用程序項目,然後將Open CV Libraries導入到您的應用程序中 –

相關問題