Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未定义的引用:cv::imencode_Android_Opencv_Java Native Interface_Opencv4android - Fatal编程技术网

Android 未定义的引用:cv::imencode

Android 未定义的引用:cv::imencode,android,opencv,java-native-interface,opencv4android,Android,Opencv,Java Native Interface,Opencv4android,我正在构建一个简单的Android应用程序,它需要使用OpenCV进行一些处理,并将它们作为MJPEG流进行传输。CV部分是用C++编写的(起初我使用java,但是它给出了12fps,我需要25-30),为了保持FPS的高,我也想在C++中使用Mocket服务器实现套接字。我尝试使用它是因为它有一个简单的API,并且它使用的所有函数似乎都是在Android NDK中实现的,但是在尝试构建时,我得到了以下错误,即缺少imencode: Build command failed. Error whi

我正在构建一个简单的Android应用程序,它需要使用OpenCV进行一些处理,并将它们作为MJPEG流进行传输。CV部分是用C++编写的(起初我使用java,但是它给出了12fps,我需要25-30),为了保持FPS的高,我也想在C++中使用Mocket服务器实现套接字。我尝试使用它是因为它有一个简单的API,并且它使用的所有函数似乎都是在Android NDK中实现的,但是在尝试构建时,我得到了以下错误,即缺少
imencode

Build command failed.
Error while executing process /Users/jonathano/Library/Android/sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /Users/jonathano/frc/code/BugEyed/app/.externalNativeBuild/cmake/debug/x86_64 --target libdbugcv}
[1/2] Building CXX object CMakeFiles/libdbugcv.dir/src/main/jni/libdbugcv.cpp.o
[2/2] Linking CXX shared library ../../../../build/intermediates/cmake/debug/obj/x86_64/liblibdbugcv.so
FAILED: : && /Users/jonathano/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++  --target=x86_64-none-linux-android23 --gcc-toolchain=/Users/jonathano/Library/Android/sdk/ndk-bundle/toolchains/x86_64-4.9/prebuilt/darwin-x86_64 --sysroot=/Users/jonathano/Library/Android/sdk/ndk-bundle/sysroot -fPIC -isystem /Users/jonathano/Library/Android/sdk/ndk-bundle/sysroot/usr/include/x86_64-linux-android -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -std=c++14 -frtti -fexceptions -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++ --sysroot /Users/jonathano/Library/Android/sdk/ndk-bundle/platforms/android-23/arch-x86_64 -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -L/Users/jonathano/Library/Android/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86_64 -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,liblibdbugcv.so -o ../../../../build/intermediates/cmake/debug/obj/x86_64/liblibdbugcv.so CMakeFiles/libdbugcv.dir/src/main/jni/libdbugcv.cpp.o CMakeFiles/libdbugcv.dir/src/main/jni/libdbugudp.cpp.o CMakeFiles/libdbugcv.dir/src/main/jni/MJPEGWriter.cpp.o  -lGLESv2 /Users/jonathano/frc/code/opencv-android/sdk/native/jni/include/../../libs/x86_64/libopencv_java3.so -landroid -lEGL -llog -lm -latomic -lm "/Users/jonathano/Library/Android/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86_64/libc++_static.a" "/Users/jonathano/Library/Android/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86_64/libc++abi.a" && :
/Users/jonathano/frc/code/BugEyed/app/src/main/jni/MJPEGWriter.cpp:77: error: undefined reference to 'cv::imencode(cv::String const&, cv::_InputArray const&, std::__ndk1::vector<unsigned char, std::__ndk1::allocator<unsigned char> >&, std::__ndk1::vector<int, std::__ndk1::allocator<int> > const&)'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

我们使用的OpenCV版本是3.4.4(Android的最新版本)。如何修复它?

我遇到了同样的问题,当其他函数正常工作时,对cv::imencode的引用未定义。该问题会导致什么结果?我也面临同样的问题。
cmake_minimum_required(VERSION 3.4.1)

include_directories($ENV{OPENCV_JNI_INCLUDE_DIR})
add_library(lib_opencv SHARED IMPORTED)
set_target_properties(
    lib_opencv
    PROPERTIES
    IMPORTED_LOCATION
    $ENV{OPENCV_JNI_INCLUDE_DIR}/../../libs/${CMAKE_ANDROID_ARCH_ABI}/libopencv_java3.so
)

add_library(
    libdbugcv
    SHARED
    src/main/jni/libdbugcv.cpp
    src/main/jni/libdbugudp.cpp
    src/main/jni/MJPEGWriter.cpp
)

target_link_libraries(
    libdbugcv
    GLESv2
    lib_opencv
    android
    EGL
    log
    m
)