Android Studio и opencv native c++

Исходные :

  • ndk21

  • AS 3.5.3

CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)

set(CMAKE_VERBOSE_MAKEFILE on)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")

include_directories(C:\\OpenCV-android-sdk\\sdk\\native\\jni\\include)

add_library(
        native-lib
        SHARED
        native-lib.cpp)

add_library(lib_opencv SHARED IMPORTED)

set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION D:\\dev\\WarpingImg\\app\\src\\main\\jniLibs\\${ANDROID_ABI}\\libopencv_java4.so)

find_library( 
        log-lib
        log)

target_link_libraries( 
        native-lib
        ${log-lib})

Error

Error while executing process C:\Users\Rodion\AppData\Local\Android\Sdk\cmake\3.10.2.4988404\bin\ninja.exe with arguments {-C D:\dev\WarpingImg\app\.cxx\cmake\debug\armeabi-v7a native-lib}
ninja: Entering directory `D:\dev\WarpingImg\app\.cxx\cmake\debug\armeabi-v7a'
[1/2] Building CXX object CMakeFiles/native-lib.dir/native-lib.cpp.o
[2/2] Linking CXX shared library D:\dev\WarpingImg\app\build\intermediates\cmake\debug\obj\armeabi-v7a\libnative-lib.so
FAILED: D:/dev/WarpingImg/app/build/intermediates/cmake/debug/obj/armeabi-v7a/libnative-lib.so 
cmd.exe /C "cd . && C:\Users\Rodion\AppData\Local\Android\Sdk\ndk\21.0.6113669\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi16 --gcc-toolchain=C:/Users/Rodion/AppData/Local/Android/Sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=C:/Users/Rodion/AppData/Local/Android/Sdk/ndk/21.0.6113669/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security  -std=c++11 -std=gnu++11 -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libnative-lib.so -o D:\dev\WarpingImg\app\build\intermediates\cmake\debug\obj\armeabi-v7a\libnative-lib.so CMakeFiles/native-lib.dir/native-lib.cpp.o  -llog -latomic -lm && cd ."
C:/OpenCV-android-sdk\sdk\native\jni\include\opencv2\core/mat.inl.hpp:739: error: undefined reference to 'cv::fastFree(void*)'
C:/OpenCV-android-sdk\sdk\native\jni\include\opencv2\core/mat.inl.hpp:851: error: undefined reference to 'cv::Mat::deallocate()'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

Как исправить...?


Ответы (2 шт):

Автор решения: Rodion

Нашел.

В:

target_link_libraries( 
        native-lib
        ${log-lib})

добавить lib_opencv :

  target_link_libraries( 
                native-lib
                lib_opencv
                ${log-lib})
→ Ссылка
Автор решения: IVAN VORONA

import cv2

Инициализация видеопотока

cap = cv2.VideoCapture(0)

Инициализация метода вычитания фона

fgbg = cv2.createBackgroundSubtractorMOG2()

while True: ret, frame = cap.read() if not ret: break

# Применение метода вычитания фона
fgmask = fgbg.apply(frame)

# Отображение результата
cv2.imshow('Motion Detection', fgmask)

# Выход по нажатию клавиши 'q'
if cv2.waitKey(30) & 0xFF == ord('q'):
    break

cap.release() cv2.destroyAllWindows()

→ Ссылка