2013-10-28 31 views
0

我想QT5.2.0β1在WIN7(32B)與OpenCV的集成和Android原生C++開發。 不幸的是我無法成功。 (另外我想necessitas太多,但沒有運氣。) 應用適用於臺式機,但是當我嘗試編譯爲Android包(x86或arm7s) 我得到相關的錯誤爲「lopencv_highgui.a」構建過程中,如如何整合QT 5.2.0(WIN7 86)與OpenCV2.4.6和Android

「 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 ::色度::色度(Imath :: VEC2常量&,Imath :: VEC 2常量&,Imath :: VEC 2常量&,Imath :: VEC 2常量&)'」

我用了一個明確的設定與情侶NDKs(R8B,R8E,R9)版本,

  • 「C:\ ADT-束 - 窗口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。 VARS)
  • 「C:\的OpenCV-2.4.6-Android的SDK」。& 「」 C:\的OpenCV-2.4.6"
  • 「C:\ Qt的\ Qt5.2.0 \ 5.2.0-β1 \ mingw48_32" (QTDIR在sys.env.vars。)

我嘗試以下解決方案

  • 我重新排序在親文件OpenCV的庫定義。
  • 我檢查了SH的存在.exe(不存在)
  • 我複製了tools.jar從JDK到 「C:\ Program Files文件(x86)的\的Java \ jre7 \ lib文件」 文件夾

我用Genymotion與Nexus S的4.2.2的x86(API17)虛擬的Android環境&的Galaxy Nexus 4.1.1 x86(API16)。

我可以編譯,部署和運行的模擬器一些Qt的例子(沒有Opengls,沒有OpenCV的),但我不能讓簡單的OpenCV的應用程序的任何成功。 (PS:應用程序正在臺式機)

我想我需要用正確的親,用戶等配置一個簡單的Qt運行Android的OpenCV的例子來找到正確的解決方案,並確定了錯誤。

可能有人可以共享工作示例?

+0

添加您的.pro文件。所有的部署信息與這個問題無關。 (因爲您在建築期間卡住) –

+0

您可以從以下鏈接下載該項目:https://dl.dropboxusercontent.com/u/69950201/simpleCV.zip –

+0

您從stackoverflow讀者請求過多:)將相關位添加到帖子中。 –

回答

0

問題的發生是由於在親文件(libIlmImf.a)缺少庫定義。在親文件

修正庫定義如下:

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)並設置「Use Host GPU」標誌並將CONFIG + = opengl添加到pro文件中