Problema nell'utilizzo di OpenCV2.3.1 con Android Native Activity
-
27-10-2019 - |
Domanda
sto sviluppando un'applicazione di visione artificiale per Android.Questo lavoro implica ottenere i fotogrammi della fotocamera il più velocemente possibile, quindi sto cercando di creare un'applicazione Android direttamente in C++ utilizzando "android_native_app_glue" e "libnative_camera" per ottenere i fotogrammi della fotocamera.Sembra essere incompatibile.
Ho testato 2 opzioni.
- Ho provato a utilizzare OpenCV sull'esempio Android NDK "NativeActivity", apportando solo le poche modifiche necessarie (convertire l'esempio in C++, modificare Android.mk e application.mk e includere l'uso degli spazi dei nomi e degli include). Viene restituito il seguente errore:
libreria condivisa:libnative-activity.so c: /development/android-opencv-wsp/samples/native-activity/obj/local/armeabi-v7a/objs/native-activity/main.o:In funzione ~Mat':
C:\Development\android-opencv-wsp\samples\native-activity/../../OpenCV-2.3.1/share/OpenCV/../../include/opencv2/core/mat.hpp:297: undefined reference to
CV :: FastFree (void*) 'e così via
- Ho provato a importare le librerie necessarie per realizzare un'attività nativa sull'esempio 3 del tutorial OpenCV2.3.1.Ho semplicemente modificato Android.mk e ho aggiunto:
LOCAL_STATIC_LIBRARIES := android_native_app_glue
Immediatamente, quando aggiungo questa riga, ottengo il seguente errore:Libreria condivisa:libnative_sample.so c: /development/android-opencv-wsp/samples/tutorial-3 native/obj/local/armeabi-v7a/objs/native_sample/jni_part.o:In funzione ~Mat':
C:\Development\android-opencv-wsp\samples\tutorial-3-native/../../OpenCV-2.3.1/share/OpenCV/../../include/opencv2/core/mat.hpp:297: undefined reference to
CV :: FastFree (void*) 'e così via ...
Per favore, qualcuno ha testato un'attività puramente nativa con openCV2.3.1 e libnative_camera per ottenere i fotogrammi della fotocamera?
Grazie in anticipo.
Soluzione
Cambia LOCAL_STATIC_LIBRARIES := android_native_app_glue in LOCAL_STATIC_LIBRARIES += android_native_app_glue.Nota il segno più.Ciò aggiungerà la nuova libreria senza eliminare quella caricata in precedenza.Fonte:Edanna nei commenti
Altri suggerimenti
Lì ho risolto il problema.È stata colpa mia (come al solito xD), il problema era che stavo scrivendo nel mio Android.mk questa riga:LOCAL_STATIC_LIBRARIES := android_native_app_glue, invece di questa riga:LOCAL_STATIC_LIBRARIES += android_native_app_glue.Avevo bisogno del simbolo "più", per poter aggiungere la nuova libreria e non eliminare quella precedentemente caricata.Grazie comunque!!
@Adi Shavit - grazie
Forse dovresti dare un'occhiata all'interfaccia V4L?Potresti voler dare un'occhiata a questo thread: http://comments.gmane.org/gmane.comp.handhelds.android.ndk/2824
Se ricordo bene puoi leggere direttamente dal file dev di una fotocamera in OpenCV.-Giacomo