繁体   English   中英

如何将QT 5.2.0(win7 x86)与OpenCV2.4.6和Android集成

[英]How to integrate QT 5.2.0 (win7 x86) with OpenCV2.4.6 and Android

我正在尝试将win7(32b)中的QT5.2.0 beta 1与opencv和android集成在一起,以进行本机c ++开发。 不幸的是我无法成功。 (另外,我也尝试过necessitas,但没有运气。)该应用程序可在桌面上运行,但是当我尝试为android工具包(x86或arm7s)进行编译时,在构建期间出现诸如“ lopencv_highgui.a”相关的错误,例如

“ C:/OpenCV-2.4.6-android-sdk/sdk/native/libs/armeabi-v7a/libopencv_highgui.a(grfmt_exr.cpp.o):在函数cv::ExrDecoder::ExrDecoder()':grfmt_exr.cpp:(.text._ZN2cv10ExrDecoderC2Ev+0x82): undefined reference to Imf :: Chromaticities :: Chromaticities(Imath :: Vec2 const&,Imath :: Vec2 const&,Imath :: Vec2 const&,Imath :: Vec2 const&)的cv::ExrDecoder::ExrDecoder()':grfmt_exr.cpp:(.text._ZN2cv10ExrDecoderC2Ev+0x82): undefined reference to

我对两个NDK(r8b,r8e,r9)版本使用了清晰的设置

  • “ C:\\ adt-bundle-windows-x86-20130917”(托管的API 16、17、18)
  • “ C:\\ apache-ant-1.9.2 \\ bin \\ ant.bat”
  • “ C:\\ Program Files(x86)\\ Java \\ jdk1.7.0_45”(在系统环境变量中设置JAVA_HOME)。
  • “ C:\\ OpenCV-2.4.6-android-sdk”&“ C:\\ OpenCV-2.4.6”
  • “ C:\\ Qt \\ Qt5.2.0 \\ 5.2.0-beta1 \\ mingw48_32”(sys.env.vars中的QTDIR)。

我尝试了以下解决方案

  • 我按照定义重新排列了pro文件中的opencv库。
  • 我检查了sh.exe的存在(不存在)
  • 我从jdk复制了tools.jar到“ C:\\ Program Files(x86)\\ Java \\ jre7 \\ lib”文件夹

我将Genymotion用于NEXUS S 4.2.2 x86(API17)和Galaxy Nexus 4.1.1 x86(API16)的虚拟android环境。

我可以在模拟器上编译,部署和运行一些Qt示例(没有Opengls且没有opencv),但是在简单的opencv应用程序上我无法获得任何成功。 (PS:该应用程序在桌面上运行)

我想我需要一个带有正确的pro,用户和其他配置的简单运行的Qt opencv android示例,以找到正确的解决方案并定义错误。

任何人都可以分享工作样本吗?

由于pro文件(libIlmImf.a)中缺少库定义而发生此问题。

pro文件中更正的库定义如下:

ANDROID_OPENCV = C:/OpenCV-2.4.6-android-sdk/sdk/native
LIBS += \
$$ANDROID_OPENCV/libs/x86/libopencv_contrib.a \
$$ANDROID_OPENCV/libs/x86/libopencv_legacy.a \
$$ANDROID_OPENCV/libs/x86/libopencv_ml.a \
$$ANDROID_OPENCV/libs/x86/libopencv_objdetect.a \
$$ANDROID_OPENCV/libs/x86/libopencv_calib3d.a \
$$ANDROID_OPENCV/libs/x86/libopencv_video.a \
$$ANDROID_OPENCV/libs/x86/libopencv_features2d.a \
$$ANDROID_OPENCV/libs/x86/libopencv_highgui.a \
$$ANDROID_OPENCV/libs/x86/libopencv_androidcamera.a \
$$ANDROID_OPENCV/libs/x86/libopencv_flann.a \
$$ANDROID_OPENCV/libs/x86/libopencv_imgproc.a \
$$ANDROID_OPENCV/libs/x86/libopencv_core.a \
$$ANDROID_OPENCV/3rdparty/libs/x86/libIlmImf.a \
$$ANDROID_OPENCV/3rdparty/libs/x86/liblibpng.a \
$$ANDROID_OPENCV/3rdparty/libs/x86/liblibtiff.a \
$$ANDROID_OPENCV/3rdparty/libs/x86/liblibjpeg.a \
$$ANDROID_OPENCV/3rdparty/libs/x86/liblibjasper.a \
$$ANDROID_OPENCV/3rdparty/libs/x86/libtbb.a
  • (但是在Android模拟器中运行时,由于“未链接着色器程序”而发生了另​​一个问题。我仍在努力解决,但这是另一个问题。)
  • 编辑:我通过将模拟器从GenyMotion切换到AVD(NEXUS S,API17,w / o googleapi,x86)并设置“使用主机GPU”标志并添加CONFIG + = opengl解决了“未链接着色器程序”的问题提交文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM