代码之家  ›  专栏  ›  技术社区  ›  Vikalp Patel

opencv3.3.0:未定义对cv::imwrite-android的引用

  •  0
  • Vikalp Patel  · 技术社区  · 6 年前

    我面临错误的Android项目有OpenCV&自定义的一些用于图像处理的cpp类实现。我包括 opencv-3-3-0-android-sdk 在里面 CMakeLists.txt

     include_directories( ../opencv-3-3-0-android-sdk/sdk/native/jni/include/)
     add_library( lib_opencv
             SHARED
             IMPORTED )
     set_target_properties( lib_opencv
                       PROPERTIES IMPORTED_LOCATION
                       ${PROJECT_SOURCE_DIR}/../opencv-3-3-0-android-sdk/sdk/native/libs/${ANDROID_ABI}/libopencv_java3.so )
    

    当调用以下方法时,它抛出错误:

    void saveMat(const cv::Mat& mat, std::string dst){
            cv::imwrite(dst, mat);//throws error - undefined reference
    }
    

    运行无法引用imwrite的项目时出现以下错误。尽管

     error: undefined reference to 'cv::imwrite(cv::String const&, cv::_InputArray const&, std::__ndk1::vector<int, std::__ndk1::allocator<int> > const&)'.
    

    不过,在使用ctrl导航到该函数时,确实需要使用内部的正确函数 opencv2/imgcodecs.hpp

     CV_EXPORTS_W bool imwrite( const String& filename, InputArray img,
              const std::vector<int>& params = std::vector<int>());
    

    在我看来这好像是连接错误。你知道为什么在运行应用程序时会抛出上述错误吗?

    0 回复  |  直到 6 年前