gpt4 book ai didi

android - 如何在 Qt for Android 中使用/链接 OpenCV 3.4.1?

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:07 25 4
gpt4 key购买 nike

我想在我的 Qt for Android 项目中使用 OpenCV 3.4.1,但我遇到构建错误,例如:

.../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)'

Full error file here (对于 Stack Overflow 来说太大了)

这是我在我的 *.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());
//...
}

如何在 Qt for Android 中使用/链接 OpenCV 3.4.1?

使用的版本:

  • Android 3.4.1 的 OpenCV SDK 来自 here
  • Qt 5.10.1
  • Qt Creator 4.6.1
  • Android for armeabi-v7a(GCC 4.9,Qt 5.10.1 for Android armv72)发布

编辑 1:我更新了 *.pro 文件中的 LIBS var,但仍然有问题

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

最佳答案

问题的发生是因为 *.pro 文件中的 LIBS var 定义错误。

这是一个有效的(我添加了 -lcpufeatures 并将库按良好顺序排列)

    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

关于android - 如何在 Qt for Android 中使用/链接 OpenCV 3.4.1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50408064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com