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()