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

时间:2013-10-28 22:36:44

标签: android c++ qt opencv

我正在尝试将win7(32b)中的QT5.2.0 beta 1与opencv和android集成用于本机c ++开发。 不幸的是我无法成功。 (另外我也尝试过必需品,但没有运气。) 应用程序在桌面上工作,但当我尝试编译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: :色度(Imath :: Vec2 const&,Imath :: Vec2 const&,Imath :: Vec2 const&,Imath :: Vec2 const&)'“

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

  • “C:\ adt-bundle-windows-x86-20130917”(托管API 16,17,18)
  • “C:\阿帕奇-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(不存在)
  • 的存在
  • 我将tools.jar从jdk复制到“C:\ Program Files(x86)\ Java \ jre7 \ lib”文件夹

我使用Genymotion进行虚拟android环境,使用NEXUS S 4.2.2 x86(API17)& Galaxy Nexus 4.1.1 x86(API16)。

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

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

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

1 个答案:

答案 0 :(得分:0)

由于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,没有googleapi,x86)并设置“使用”来解决“着色器程序未链接”的问题主机GPU“标记并将CONFIG + = opengl添加到专业文件