Как использовать / связать OpenCV 3.4.1 в Qt для Android? - PullRequest
0 голосов
/ 18 мая 2018

Я хочу использовать OpenCV 3.4.1 в своем проекте Qt для Android, но я получаю ошибки сборки, такие как:

.../libopencv_core.a(system.cpp.o):system.cpp:function cv::HWFeatures::initialize(): error: undefined reference to 'android_getCpuFeatures'
.../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*): error: undefined reference to 'carotene_o4t::isSupportedConfiguration()'
.../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*): error: undefined reference to 'carotene_o4t::cmpGE(carotene_o4t::Size2D const&, unsigned char const*, int, unsigned char const*, int, unsigned char*, int)'

Полный файл ошибок здесь (слишком большой для стекаПереполнение)

Это то, что я написал в моем * .pro-файле:

QT += core quick quickcontrols2 widgets
CONFIG += c++11 console

#...

OPENCVSDKNATIVE = $$PWD/3rdparty/opencv-3.4.1-android-sdk/sdk/native

INCLUDEPATH += $$OPENCVSDKNATIVE/jni/include

equals(ANDROID_TARGET_ARCH, armeabi-v7a) {
    message("setting armeabi-v7a OPENCV libs")

    # OPENCV LIBS
    LIBS += -L"$$OPENCVSDKNATIVE/3rdparty/libs/armeabi-v7a" -llibtiff -llibjpeg -llibjasper -llibpng -llibwebp -lIlmImf -ltbb -ltegra_hal
    LIBS += -L"$$OPENCVSDKNATIVE/staticlibs/armeabi-v7a" -lopencv_core -lopencv_imgcodecs -lopencv_imgproc

    ANDROID_EXTRA_LIBS += $$OPENCVSDKNATIVE/libs/armeabi-v7a/libopencv_java3.so
}

и что я вставил в свой код cpp:

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>

int main (int argc, char *argv[]){
    QString imgPath = "path_to_my_image.jpg";     
    cv::Mat image = cv::imread(imgPath.toStdString().c_str());
    //...
}

Как использовать / связать OpenCV 3.4.1 в Qt для Android?

Используемые версии:

  • OpenCV SDK для Android 3.4.1 из здесь .
  • Qt 5.10.1
  • Qt Creator 4.6.1
  • Android для armeabi-v7a (GCC 4.9, Qt 5.10.1 для Android armv72) Выпуск

РЕДАКТИРОВАТЬ 1 : я обновилLIBS var в файле * .pro, но по-прежнему выдает

LIBS +=\
    -L"$$OPENCVSDKNATIVE/3rdparty/libs/armeabi-v7a"\
    -L"$$OPENCVSDKNATIVE/staticlibs/armeabi-v7a"\
    -llibtiff -llibjpeg -llibjasper -llibpng -lIlmImf   -llibprotobuf\
    -lopencv_core -lopencv_imgproc -lopencv_imgcodecs\
    -ltbb -lcpufeatures -ltegra_hal

1 Ответ

0 голосов
/ 18 мая 2018

Проблемы возникли из-за неправильного определения переменной LIBS в файле * .pro.

Это допустимая ошибка (я добавил -lcpufeatures и поставил libs в хорошем порядке)

    LIBS +=\
    -L"$$OPENCVSDKNATIVE/3rdparty/libs/armeabi-v7a"\
    -L"$$OPENCVSDKNATIVE/staticlibs/armeabi-v7a"\
     -lopencv_imgcodecs -lopencv_imgproc -lopencv_core -llibtiff -llibjpeg -llibjasper -llibpng -lIlmImf -llibprotobuf -llibwebp -ltbb -lcpufeatures -ltegra_hal 
...