OpenCV2.4 con la actividad de Android Native
Actualmente estoy enfrentando el mismo problema que el presentado en esta pregunta , excepto que utilizo la versión 2.4 en lugar de la 2.3.1.
He convertido la actividad nativa (de las muestras de ndk) a c ++ y he modificado android.mk y application.mk.
- Prueba NEON-optimizado cv :: threshold () en el dispositivo móvil
- ¿Cómo puedo optimizar la costura de múltiples imágenes?
- Android OpenCV getPerspectiveTransform y warpPerspective
- Android OpenCV Encuentra la plaza o rectángulo más grande
- ¿Cómo puedo acelerar mi aplicación Android-openCV?
Tuve los mismos errores (con ~ Mat y así uno).
Cuando leí las respuestas a la pregunta, me di cuenta que necesitaba agregar OPENCV_INSTALL_MODULES:=on and OPENCV_LIB_TYPE:=STATIC
(lo cual es extraño ya que tengo otro proyecto con openCV nativo que no requiere estas dos líneas).
Pero todavía no funciona.
Android.mk es el siguiente:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) OPENCV_LIB_TYPE:=STATIC OPENCV_INSTALL_MODULES:=on include includeOpenCV.mk ifeq ("$(wildcard $(OPENCV_MK_PATH))","") #try to load OpenCV.mk from default install location include $(TOOLCHAIN_PREBUILT_ROOT)/user/share/OpenCV/OpenCV.mk else include $(OPENCV_MK_PATH) endif LOCAL_MODULE := native-activity LOCAL_SRC_FILES := main.cpp engine.cpp LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM LOCAL_STATIC_LIBRARIES += android_native_app_glue include $(BUILD_SHARED_LIBRARY) $(call import-module,android/native_app_glue)
Estoy recibiendo los siguientes errores:
./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvPuts(CvFileStorage*, char const*)': persistence.cpp:(.text._ZL7icvPutsP13CvFileStoragePKc+0x20): undefined reference to `gzputs' ./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvGets(CvFileStorage*, char*, int)': persistence.cpp:(.text._ZL7icvGetsP13CvFileStoragePci+0x26): undefined reference to `gzgets' ./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `icvXMLSkipSpaces(CvFileStorage*, char*, int)': persistence.cpp:(.text._ZL16icvXMLSkipSpacesP13CvFileStoragePci+0x1e2): undefined reference to `gzgets' persistence.cpp:(.text._ZL16icvXMLSkipSpacesP13CvFileStoragePci+0x208): undefined reference to `gzeof' persistence.cpp:(.text._ZL16icvXMLSkipSpacesP13CvFileStoragePci+0x33c): undefined reference to `gzeof' ./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `_ZL16icvYMLSkipSpacesP13CvFileStoragePcii.clone.3': persistence.cpp:(.text._ZL16icvYMLSkipSpacesP13CvFileStoragePcii.clone.3+0x124): undefined reference to `gzgets' persistence.cpp:(.text._ZL16icvYMLSkipSpacesP13CvFileStoragePcii.clone.3+0x170): undefined reference to `gzeof' /cygdrive/d/soft/NVPACK/android-ndk-r7c/build/core/build-binary.mk:366: recipe for target `obj/local/armeabi-v7a/libnative-activity.so' failed persistence.cpp:(.text._ZL16icvYMLSkipSpacesP13CvFileStoragePcii.clone.3+0x28e): undefined reference to `gzeof' ./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `cvReleaseFileStorage': persistence.cpp:(.text.cvReleaseFileStorage+0x24): undefined reference to `gzclose' ./obj/local/armeabi-v7a/libopencv_core.a(persistence.cpp.o): In function `cvOpenFileStorage': persistence.cpp:(.text.cvOpenFileStorage+0x66e): undefined reference to `gzopen' persistence.cpp:(.text.cvOpenFileStorage+0x8fc): undefined reference to `gzclose' persistence.cpp:(.text.cvOpenFileStorage+0xaea): undefined reference to `gzrewind' persistence.cpp:(.text.cvOpenFileStorage+0xbee): undefined reference to `gzrewind' persistence.cpp:(.text.cvOpenFileStorage+0xc0a): undefined reference to `gzclose' collect2: ld returned 1 exit status make: *** [obj/local/armeabi-v7a/libnative-activity.so] Error 1
¿Hay algo que me perdí?
- Cómo averiguar la cara detectada es real o falsa
- OpenCV para Android - formación SVM con descriptores SURF
- OpenCV Android Library Errores después de la instalación
- Cómo obtener GNU C en las preferencias
- Uso no libre (SIFT, SURF) en android con java
- Animar la imagen de la cara - usando deformación?
- Reconocimiento y seguimiento de objetos en movimiento más rápido en Android
- ¿Por qué OpenCV Manager y neon necesitan en android?
Trate de reemplazar
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM
con
LOCAL_LDLIBS += -llog -landroid -lEGL -lGLESv1_CM
Aunque esta es una vieja pregunta, me encuentro con el mismo problema y lo arreglé agregando
LOCAL_LDLIBS += -lz # Compression library
A mi Android.mk
Terminé tratando con el proyecto de plasma nativo (en el que la pantalla se hace por escrito en un mapa de bits) y funcionó bien.
Tal vez GLES estaba jugando con OpenCV. No creo que haya otra diferencia entre los dos proyectos.
De alguna manera se resuelve el problema. Aún así, si alguien encuentra el mismo problema y lo resuelve, estaría interesado en entender qué lo causó y cómo solucionarlo.
- org.w3c.dom.Node con la versión de Android menos de 2.2
- Comunicación Bluetooth basada en RFCOMM entre dos dispositivos Android