Я пытался использовать OpenCV с Android внутри Qt, но я не могу успешно связать его внутри Qt, я получаю некоторые неопределенные ошибки ссылок на сторонние библиотеки (такие как libjpeg, libtegra_hal и т. Д.). я использовал этот так ответ в качестве справочного руководства.
Это мой .pro файл —
INCLUDEPATH += "$$PWD/../../External-Libraries/opencv-android/sdk/native/jni/include"
android {
# 3rd party libs
LIBS += \
-L"$$PWD/../../External-Libraries/opencv-android/sdk/native/3rdparty/libs/armeabi-v7a"\
-llibtiff\
-llibjpeg\
-llibjasper\
-llibpng\
-llibwebp\
-lIlmImf\
-ltbb\
-ltegra_hal
# opencv libs
LIBS += -L"$$PWD/../../External-Libraries/opencv-android/sdk/native/libs/armeabi-v7a"\
-lopencv_core\
-lopencv_highgui\
-lopencv_java3\
-lopencv_calib3d\
-lopencv_imgcodecs\
-lopencv_imgproc\
-lopencv_flann\
-lopencv_features2d\
-lopencv_ml\
-lopencv_objdetect\
-lopencv_photo\
-lopencv_shape\
-lopencv_stitching\
-lopencv_superres\
-lopencv_video\
-lopencv_videoio\
-lopencv_videostab
ANDROID_PACKAGE_SOURCE_DIR=$$PWD/android
}
Я использую Qt 5.8 и OpenCV 3.2.0. Ошибки в этом формате —
libopencv_core.a: … ошибка: неопределенная ссылка на (метод одной из сторонних библиотек)
Это пример —
libopencv_core.a (arithm.cpp.o): arithm.cpp: function cv :: hal :: cmp8u (unsigned char const *, unsigned int, unsigned char const *, unsigned int, unsigned char *, unsigned int, int, int , void *): ошибка: неопределенная ссылка на ‘carotene_o4t :: isSupportedConfiguration ()’
куда carotene
является функцией libtegra_hal.a
, Есть ли способ связать библиотеки opencv с библиотеками сторонних разработчиков?
Благодарю.
РЕДАКТИРОВАТЬ:
Я могу успешно скомпилировать и запустить библиотеку OpenCV 3.1.0, но не библиотеку 3.2.0.
Обходной путь: используйте OpenCV 3.1.0 или более раннюю версию или скомпилируйте OpenCV 3.2.0 с отключенным CAROTENE.
Я не могу найти какие-либо другие решения на данный момент.
Других решений пока нет …