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.

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í?

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.

  • OpenCV - Java: función inRange
  • Convertir Vec4i a Java openCV
  • Umbral en Android con opencv
  • Reconocimiento de fuentes del dibujo a mano libre
  • Grabación de procesamiento en vivo de OpenCV en Android
  • Cómo integrar el gestor de opencv en una aplicación para Android
  • Cómo leer el valor de cada píxel como valores RGB del objeto Mat m en OpenCV
  • Cómo calcular la diferencia entre 2 fotogramas entrantes de la cámara (CV abierto)
  • Diferencia entre NativeCameraView y JavaCameraView en OpenCV
  • Prueba de unidad de Android para la vista previa de la cámara?
  • Reconocimiento facial en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.