Android的一室公寓OpenCV的为Android NDK,OpenCV的头文件未找到 [英] Android Studio with opencv for android ndk, opencv header files not found

查看:1432
本文介绍了Android的一室公寓OpenCV的为Android NDK,OpenCV的头文件未找到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到到Android工作室为Android开发OpenCV的,但是当我编译这是在日食确定项目,我得到这个错误:


  

D:\\software\\AndroidStudioProjects\\CameraMe\\openCVSamplefacedetection\\src\\main\\jni\\DetectionBasedTracker_jni.cpp:2:33:致命错误:opencv2 /核心/ core.hpp:没有这样的文件或目录


我猜OpenCV的头没有被发现,但我不知道什么是错的。

Android.mk

  LOCAL_PATH:= $(叫我-DIR)包括$(CLEAR_VARS)#OPENCV_CAMERA_MODULES:=关闭
#OPENCV_INSTALL_MODULES:=关闭
#OPENCV_LIB_TYPE:= SHARED
包括D:\\日食\\ OpenCV_2.4.9_android_sdk \\ SDK \\本地\\ JNI \\ OpenCV.mkLOCAL_SRC_FILES:= DetectionBasedTracker_jni.cpp
LOCAL_C_INCLUDES + = $(LOCAL_PATH)
LOCAL_LDLIBS + = -llog -ldlLOCAL_MODULE:= detection_based_tracker包括$(BUILD_SHARED_LIBRARY)

Application.mk

  APP_STL:= gnustl_static
APP_CPPFLAGS:= -frtti -fexceptions
APP_ABI:= armeabi-V7A
APP_PLATFORM:=机器人-8

DetectionBasedTracker_jni.cpp

 的#include< D​​etectionBasedTracker_jni.h>
#包括LT&; opencv2 /核心/ core.hpp>
#包括LT&; opencv2 /的contrib / detection_based_tracker.hpp>
......


解决方案

为你使用Android的工作室,你的Makefile默认情况下和新的忽略是在即时生成的,没有正确引用OpenCV的,因为它是不支持

这是NDK如何构建正在从Android的工作室工作,这是pcated而更好的方式来做到这一点是在工作中去$ P $。

您可以禁用这个内置的NDK的支持,让你的Makefile文件来代替,这样做你里面的的build.gradle 的:

 进口org.apache.tools.ant.taskdefs.condition.Os应用插件:'com.android.application安卓{
    ...    sourceSets.main {
        jniLibs.srcDir'的src / main /库'//设置.so文件目录库
        jni.srcDirs = [] //禁用自动NDK的构建通话
    }    //调用定期NDK的构建(.CMD)从app目录的脚本
    任务ndkBuild(类型:执行){
        如果(Os.isFamily(Os.FAMILY_WINDOWS)){
            命令行'NDK-build.cmd','-C',文件(钢骨混凝土/主')。absolutePath
        }其他{
            命令行'NDK的构建,-C,文件(钢骨混凝土/主')。absolutePath
        }
    }    tasks.withType(JavaCompile){
        compileTask - > compileTask.dependsOn ndkBuild
    }
}

顺便说一句,我看你设定 APP_ABI 才的 armeabi-V7A 的,但OpenCV的也支持的 86 MIPS 的,所以你也可以轻松地扩展您的支持,这些平台。

I'm getting to Android Studio for Android OpenCV developing, but when I compile the project which was ok in eclipse, I got this error:

D:\software\AndroidStudioProjects\CameraMe\openCVSamplefacedetection\src\main\jni\DetectionBasedTracker_jni.cpp:2:33: fatal error: opencv2/core/core.hpp: No such file or directory

I guess the headers for opencv was not found, but I don't know what's wrong.

Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

#OPENCV_CAMERA_MODULES:=off
#OPENCV_INSTALL_MODULES:=off
#OPENCV_LIB_TYPE:=SHARED
include D:\eclipse\OpenCV_2.4.9_android_sdk\sdk\native\jni\OpenCV.mk

LOCAL_SRC_FILES  := DetectionBasedTracker_jni.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS     += -llog -ldl

LOCAL_MODULE     := detection_based_tracker

include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-8

DetectionBasedTracker_jni.cpp

#include <DetectionBasedTracker_jni.h>
#include <opencv2/core/core.hpp>
#include <opencv2/contrib/detection_based_tracker.hpp>
......

解决方案

as you're using Android Studio, your Makefiles are ignored by default and new ones are generated on-the-fly, without properly referencing OpenCV as it's not supported.

This is how NDK builds are currently working from Android Studio and it's deprecated while a better way to do it is in the work.

You can deactivate this built-in NDK support and get your Makefiles to be used instead, by doing this inside your build.gradle:

import org.apache.tools.ant.taskdefs.condition.Os

apply plugin: 'com.android.application'

android {
    ...

    sourceSets.main {
        jniLibs.srcDir 'src/main/libs' //set .so files directory to libs
        jni.srcDirs = [] //disable automatic ndk-build call
    }

    // call regular ndk-build(.cmd) script from app directory
    task ndkBuild(type: Exec) {
        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
            commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath
        } else {
            commandLine 'ndk-build', '-C', file('src/main').absolutePath
        }
    }

    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn ndkBuild
    }
}

btw, I see you set APP_ABI only to armeabi-v7a, but OpenCV also supports x86 and mips, so you can also easily extend your support to these platforms.

这篇关于Android的一室公寓OpenCV的为Android NDK,OpenCV的头文件未找到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆