随着OpenCV 2.3的发布终于出来,我想在我的系统上编译并安装这个最新版本。由于我经常使用Qt和QtCreator,我当然希望能够在我的Qt项目中使用它。我已经尝试了几种方法几个小时但总是会出错:
首先尝试:使用WITH_QT
编译OpenCV 2.3首先,我想做的就像我对2.2发布的做法一样,对我来说很好。为此我遵循了本指南:http://knowtheabc.wordpress.com/2011/02/25/windows-opencv-and-qt-creator/
g++.exe
,gcc.exe
和qmake.exe
的路径,检查WITH_QT和为发布生成Makefile。mingw32-make
和mingw32-make install
成功完成后,我只需要添加路径到我的“.pro”文件,并能够构建一些使用OpenCV的好软件(在我使用2.2版本时)。基本上,最后一部分在这里描述:http://knowtheabc.wordpress.com/2011/02/25/opencv-in-qt/
所以我尝试使用与旧版本一样成功编译的2.3版本。它甚至构建了我的示例程序,但只要我执行它,它就会再次关闭并返回:-1073741515
第二次尝试:使用MinGW预先构建的OpenCV superpack
由于第一种方法不起作用,我尝试使用预构建版本。虽然这些没有启用WITH_QT,但我仍然想尝试。
所以我下载了superpack,将其解压缩并放在某个地方。然后我想像以前一样做,并将include文件夹和dll的路径添加到我的“.pro”文件中:
INCLUDEPATH+= C:/workspace/opencv/OpenCV2.3/build/include
LIBS+= C:/workspace/opencv/OpenCV2.3/build/x64/mingw/bin/*.dll
作为编译器,我使用了当前Qt SDK附带的MinGW编译器。但是这会在建造时崩溃:
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编译器
我也尝试使用Qt SDK附带的vc2008编译器。所以我选择了编译器并调整了“.pro”文件中的路径来使用:
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.
所以这里是我的设置:
有人知道这里可能有什么问题吗?很高兴得到任何帮助!
答案 0 :(得分:6)
我刚刚使用我的QT 4.7.3来使用OpenCV2.3。不幸的是,我不得不安装VC ++ 2008 Express Edition和Microsoft的CDB调试器(两者都是微软的免费赠品)。 好的部分是我现在可以在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位项目。
祝你好运,安德烈
答案 1 :(得分:1)
显而易见,
我今天也遇到了-1073741515错误。 事实证明,问题与我在发布文件夹中的Qt dll有关....我仍在使用mingw32版本而不是msvc2008版本。所以我将msvc2008 dll文件复制到了我的Release文件夹,最后我设法运行了我的Qt应用程序。