Android Studio编写C++代码时无法找到opencv2的技术咨询
Hey there! Let's work through that "Cannot find opencv2" error you're hitting in your Android Studio C++ project step by step.
解决Android Studio C++项目中找不到opencv2的问题
第一步:确认你拿到了适配Android的OpenCV原生库
首先要注意:你需要下载OpenCV for Android的专属包,不是桌面版OpenCV。解压后找到sdk/native目录——这里面包含了我们需要的头文件和预编译的SO库。建议把这个native目录复制到你的项目根目录下(比如新建一个opencv文件夹,把native内容放进去),方便后续路径配置。
第二步:用CMake配置(Android Studio推荐方式)
如果你的项目默认用CMake管理原生代码,修改app/src/main/cpp/CMakeLists.txt:
- 先设置OpenCV的路径并引入头文件:
# 根据你实际的OpenCV路径调整,这里假设opencv/native在项目根目录 set(OPENCV_DIR ${CMAKE_SOURCE_DIR}/../../opencv/native) include_directories(${OPENCV_DIR}/jni/include)
- 引入预编译的OpenCV库:
add_library(libopencv_java4 SHARED IMPORTED) set_target_properties(libopencv_java4 PROPERTIES IMPORTED_LOCATION ${OPENCV_DIR}/libs/${ANDROID_ABI}/libopencv_java4.so)
- 把OpenCV库链接到你的原生库:
target_link_libraries( your-native-lib-name # 替换成你的原生库名称 ${log-lib} libopencv_java4)
- 别忘了在
app/build.gradle里指定支持的ABI(和OpenCV库的ABI匹配):
android { defaultConfig { externalNativeBuild { cmake { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } } } }
第三步:用Android.mk + Application.mk配置(传统方式)
如果你坚持使用老的NDK Build系统:
- 在原生代码目录(比如
app/src/main/jni)下创建Android.mk:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # 替换成你的OpenCV native目录路径 OPENCVROOT:= ${LOCAL_PATH}/../../../../opencv/native OPENCV_CAMERA_MODULES:=off OPENCV_INSTALL_MODULES:=on OPENCV_LIB_TYPE:=SHARED include ${OPENCVROOT}/jni/OpenCV.mk LOCAL_SRC_FILES := your-native-file.cpp # 替换成你的C++文件名 LOCAL_LDLIBS += -llog -ldl LOCAL_MODULE := your-native-lib-name # 替换成你的原生库名称 include $(BUILD_SHARED_LIBRARY)
- 同目录下创建
Application.mk:
APP_STL := c++_shared APP_CPPFLAGS := -frtti -fexceptions APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 APP_PLATFORM := android-24 # 替换成你的项目最低SDK版本
- 在
app/build.gradle里指定使用NDK Build:
android { defaultConfig { externalNativeBuild { ndkBuild { path 'src/main/jni/Android.mk' } } } externalNativeBuild { ndkBuild { path 'src/main/jni/Android.mk' } } }
第四步:同步并清理缓存
完成配置后,点击Android Studio右上角的Sync Project with Gradle Files,然后执行Build > Clean Project和Build > Rebuild Project——缓存经常会导致这类路径识别问题。
最后检查
确保你的C++文件里的头文件引用写法正确:
#include <opencv2/opencv.hpp>
不要用错误的相对路径,比如../opencv2/...这类写法。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

