2011-07-17 82 views
2

隨着OpenCV 2.3的發佈終於出爐,我想在我的系統上編譯和安裝這個最新版本。由於我經常與Qt和QtCreator合作,我當然希望能夠在我的Qt項目中使用它。我現在已經嘗試了多種方法來幾個小時,但總是出現錯誤:在QtCreator中使用OpenCV 2.3和Qt

首先嚐試:編譯的OpenCV 2.3 WITH_QT

首先,我想做到這一點,就像我與2.2版發佈工作得很好爲了我。爲此,我遵循這個指南:http://knowtheabc.wordpress.com/2011/02/25/windows-opencv-and-qt-creator/

  • 下載源代碼
  • 設置CMake的,並告訴它來創建MinGW的Makefile文件和指定的路徑在我的C的g++.exegcc.exeqmake.exe:\ Qt的.. 。路徑,檢查WITH_QT併爲發佈版本生成Makefile。
  • 建立並使用mingw32-makemingw32-make install

它安裝在後殼這是成功完成,我只是需要的路徑添加到我的「的.pro」文件,並能建立使用一些不錯的軟件OpenCV(在我使用2.2版本的時候)。基本上這裏描述的最後一部分:http://knowtheabc.wordpress.com/2011/02/25/opencv-in-qt/

因此,我試圖與2.3版本相同,編譯成功,就像舊版本一樣。它甚至建立我的示例程序,但只要我執行它,它再次將關閉並返回:-1073741515

第二個嘗試:利用使用MinGW的

作爲第一種方法沒有預構建的OpenCV superpack我嘗試使用預編譯版本。雖然這些沒有啓用WITH_QT,但我仍然想嘗試。

所以我下載了超級包,解壓縮並放在某個地方。然後,我想做同樣的像我一樣以前並添加路徑到包括文件夾和dll文件到我的「的.pro」文件:

INCLUDEPATH+= C:/workspace/opencv/OpenCV2.3/build/include 
LIBS+= C:/workspace/opencv/OpenCV2.3/build/x64/mingw/bin/*.dll 

由於編譯器我用自帶的當前的Qt MinGW的編譯器SDK。但這種崩潰而建築:

C:/workspace/opencv/OpenCV2.3/build/x64/mingw/bin/libopencv_calib3d230.dll: file not recognized: File format not recognized 
collect2: ld returned 1 exit status 
mingw32-make[1]: *** [release\CoinDetector.exe] Error 1 
mingw32-make: *** [release] Error 2 

第三次嘗試:就像第二,但與使用VC2008編譯

我試圖與VC2008編譯器自帶的Qt SDK,以及同樣的事情。所以我選擇了編譯器並在「」中修改了路徑。親」文件中使用:

LIBS+= C:/workspace/opencv/OpenCV2.3/build/x64/vc9/bin/*.dll 

但是,這也有錯誤崩潰,它無法讀取該dll:

C:/workspace/opencv/OpenCV2.3/build/x64/vc9/bin/opencv_calib3d230.dll : fatal error LNK1107: Ungültige oder beschädigte Datei: Lesen bei 0x2F0 nicht möglich. 

所以在這裏我設置:

  • Win7專業版x64
  • 最新安裝的Qt SDK(4.7.3)
  • OpenCV的2.3版本

沒有任何人有一個想法,什麼可能是錯在這裏?會很高興的任何幫助!

回答

6

我剛拿到我的QT 4.7.3與OpenCV2.3一起工作。不幸的是,我不得不安裝VC++ 2008 Express Edition和Microsoft的CDB調試器(兩者都是來自Microsoft的免費軟件)。 好的部分是我現在可以在IDE,VS 2008和Qt Creator中爲Opencv開發。

這些都是我.pro文件的設置:

INCLUDEPATH += C:/OpenCV2.3/build/include 
INCLUDEPATH += C:/OpenCV2.3/build/include/opencv 

LIBS += C:/OpenCV2.3/build/x86/vc9/lib/opencv_calib3d230.lib 
LIBS += C:/OpenCV2.3/build/x86/vc9/lib/opencv_contrib230.lib 
LIBS += C:/OpenCV2.3/build/x86/vc9/lib/opencv_core230.lib 
LIBS += C:/OpenCV2.3/build/x86/vc9/lib/opencv_features2d230.lib 
LIBS += C:/OpenCV2.3/build/x86/vc9/lib/opencv_flann230.lib 
LIBS += C:/OpenCV2.3/build/x86/vc9/lib/opencv_highgui230.lib 
LIBS += C:/OpenCV2.3/build/x86/vc9/lib/opencv_imgproc230.lib 
LIBS += C:/OpenCV2.3/build/x86/vc9/lib/opencv_objdetect230.lib 
LIBS += C:/OpenCV2.3/build/x86/vc9/lib/opencv_video230.lib 

記住,在項目設置中選擇MSVC編譯器

我都試過,我不知道有多少不同的方法來使它與MinGW一起工作,但目前爲止還不是正確的。 我也在Windows 7 64位......但我正在開發32位,我想如果我使用x64庫,我可能會得到64位項目的工作。

祝你好運,

安德烈斯

+0

以及作爲學生我有完整的Visual Studio 2008安裝,因爲我通過MSDNAA得到它。所以你使用預建的版本,但只包含lib文件而不是dll?這將是值得一試的......感謝迄今 – evident

+0

好吧,我剛剛嘗試過你的東西,它不再在編譯時給出錯誤...但現在我得到了同樣的錯誤,因爲我在我編譯自己的mingw版本中做了「First嘗試「 - 返回值:-1073741515 ...所以整個問題似乎歸結爲修復該錯誤,那麼它應該與Visual Studio編譯器和MinGW一起工作...... – evident

+0

您是否修改了PATH環境變量?我看起來像地獄,因爲我一直在添加,直到它工作:特別是C:\ OPenCV2.3 \ build \ x86 \ vc9 \ bin; C:\ opencv2.3 \ build \ x86 \ mingw \ bin; c:\ mingw \ bin; c:\ Program Files(x86)\ Microsoft Visual Studion 9.0 \ VC \ bin ... – MisterWalrus

1

明顯,

我今天也得到儘可能的-1073741515錯誤。 事實證明,這個問題與我在發佈文件夾中的Qt dll有關......我仍然使用mingw32版本而不是msvc2008版本。所以我將msvc2008 dll文件複製到我的Release文件夾中,並最終設法運行我的Qt應用程序。