在QtCreator中使用OpenCV 2.3和Qt

时间:2011-07-17 18:57:35

标签: visual-studio-2008 qt opencv mingw qt-creator

随着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/

  • 下载了源代码
  • 设置CMake并告诉它创建MInGW Makefile并在我的C:\ Qt ...路径中指定g++.exegcc.exeqmake.exe的路径,检查WITH_QT和为发布生成Makefile。
  • 使用mingw32-makemingw32-make install
  • 在shell中构建并安装它

成功完成后,我只需要添加路径到我的“.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.

所以这里是我的设置:

  • Win7 Professional x64
  • 安装了最新的Qt SDK(4.7.3)
  • OpenCV 2.3发布

有人知道这里可能有什么问题吗?很高兴得到任何帮助!

2 个答案:

答案 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应用程序。