opencv - 无法在 opencv 3.3rc 上为 android : 制作 find_package(Opencv)

标签 opencv android-ndk

我正在尝试集成新的 Opencv3.3rc 标签以使用 OpenCV dnn 模块。 https://github.com/opencv/opencv/tree/3.3.0-rc

我可以交叉编译 OpenCV 库,但是当我尝试使 FindOpencv 成为必需时,出现此错误:

Some (but not all) targets in this export set where already defined.

如您所见,注册的唯一目标是 cpufeatures:

  Targets Defined: cpufeatures
  Targets not yet defined:
  libtiff;libjpeg;libwebp;libjasper;libpng;IlmImf;tegra_hal;libprotobuf;opencv_core;opencv_flann;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_video;opencv_dnn;opencv_imgcodecs;opencv_shape;opencv_videoio;opencv_highgui;opencv_superres;opencv_features2d;opencv_calib3d;opencv_java;opencv_stitching;opencv_videostab

正如我在OpenCVconfig.cmake配置文件中看到的,目前有两种方法可以找到OpenCV:

这个:

find_package(OpenCV REQUIRED)

或定义模块:

find_package(OpenCV REQUIRED core videoio)

但它们都不起作用。

错误来自这个片段 OpenCVModules.cmake

# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)

# Protect against multiple inclusion, which would fail when already imported targets are added once more.
set(_targetsDefined)
set(_targetsNotDefined)
set(_expectedTargets)
foreach(_expectedTarget cpufeatures libtiff libjpeg libwebp libjasper libpng IlmImf tegra_hal libprotobuf opencv_core opencv_flann opencv_imgproc opencv_ml opencv_objdetect opencv_photo opencv_video opencv_dnn opencv_imgcodecs opencv_shape opencv_videoio opencv_highgui opencv_superres opencv_features2d opencv_calib3d opencv_java opencv_stitching opencv_videostab)
  list(APPEND _expectedTargets ${_expectedTarget})
  if(NOT TARGET ${_expectedTarget})
    list(APPEND _targetsNotDefined ${_expectedTarget})
  endif()
  if(TARGET ${_expectedTarget})
    list(APPEND _targetsDefined ${_expectedTarget})
  endif()
endforeach()
if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
  unset(_targetsDefined)
  unset(_targetsNotDefined)
  unset(_expectedTargets)
  set(CMAKE_IMPORT_FILE_VERSION)
  cmake_policy(POP)
  return()
endif()
if(NOT "${_targetsDefined}" STREQUAL "")
  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
endif()

有人知道这是怎么发生的吗?

最佳答案

我找到了答案:

我之前定义了cpu-features库,所以这段代码是CMakelists.txt中的冲突部分。

add_library(cpufeatures STATIC
            ${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c)

去掉这部分,问题解决。

关于opencv - 无法在 opencv 3.3rc 上为 android : 制作 find_package(Opencv),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45074861/

相关文章:

c++ - cv::gpu::HoughLines 无法正常工作

OpenCV 错误 : Assertion failed (size. width>0 && size.height>0)

android - 在 CMake 中使用外部 C++ 库时出错

android - 如何使用 C 中的 execlp native 函数打开浏览器

java - 首次调用 NDK 函数时的查找延迟?

python - 函数 'cvtColor' 中的 OpenCV 错误 : (-215:Assertion failed) ! _src.empty()

android - 错误 :(49) undefined reference to 'cv::Stitcher::createDefault(bool)' in using OpenCV native in Android

python - 两条线之间的像素强度值

android - 可以覆盖 App 中的系统 .so 库

android - 如何构建 Android NDK 示例 : "bitmap-plasma"