如何在Qt中使用OpenCV  

       用Qt可以方便地创造好看的GUI,要是能和OpenCV结合起来我们就能写出蛮好的一个处理或者管理图片的软件。怎么在Qt中使用OpenCV呢?请看下文:

        :我的Qt版本4.7.4(C:\QtSDK\Desktop\Qt\4.7.4),OpenCV版本2.3.1(E:\opencv),Qt下有MinGW编译器(C:\QtSDK\mingw)

        具体步骤:

Step1>

        CMake OpenCV,使用CMakehttp://www.cmake.org/)生成OpenCV库的makefile文件,需要注意的是解压出来的OpenCV存储路径中的文件夹不要带有空格或者中文(我的是E:\OpenCV,不要用类似于E:\工程\opencv, E:\Open CV这种),打开CMake,指定源码位置(就是OpenCV解压出来的地方)和存放生成文件的地方,Configure弹出如图对话框,选择MinGW MakefilesSpecify native compilers

Qt_Basic_如何在Qt中使用OpenCV - ___________杰 - __________Ggicci

跳出对话框用以指定C++和C的编译器路径,C用gcc.exe,在QtSDK目录下的mingw/bin子目录中,C++用g++.exe

Qt_Basic_如何在Qt中使用OpenCV - ___________杰 - __________Ggicci

然后再次Configure,无错误后选中WITH_QT

Qt_Basic_如何在Qt中使用OpenCV - ___________杰 - __________Ggicci

再次Configure会出现下图信息提示找不到Qt的Qmake可执行文件

Qt_Basic_如何在Qt中使用OpenCV - ___________杰 - __________Ggicci

手动指定Qmake.exe所在目录(在.\QtSDK\Desktop\Qt\4.7.4\mingw\bin下面):

Qt_Basic_如何在Qt中使用OpenCV - ___________杰 - __________Ggicci

 

Qt_Basic_如何在Qt中使用OpenCV - ___________杰 - __________Ggicci

再次Configure,无错误后 Generate

Step2>

        编译

        1> Cmd命令 转到Generate到的目录(我的是如上图所示的E:\opencv\MinGW)

             >> cd E:\opencv\MinGW

        2> Cmd命令 编译文件

             >> mingw32-make

        3> Cmd命令 编译INSTALL

             >> mingw32-make install

过程如图:

Qt_Basic_如何在Qt中使用OpenCV - ___________杰 - __________Ggicci

 

Qt_Basic_如何在Qt中使用OpenCV - ___________杰 - __________Ggicci

 Step3>

        在存放Generate生成的目录下有一个install目录,编译好的所有结果都在这里啦,包括bin,lib和include,把bin目录放到环境变量path中,其实可以把整个install目录拷贝到某个地方使用,这样就可以把opencv目录里面的内容全删了,省的占空间。我就把install里面的内容全都搬到了E盘下的OpenCVforQt目录下了(0.0)。

 

Example:

        在用QtCreator和OpenCV的时候,修改用到opencv的工程的.pro文件就可以了,添加include和lib,例如:

          QT       += core gui

          TARGET = Win_OpenCV_Test

          TEMPLATE = app

          INCLUDEPATH += E:\OpenCVforQt\include
          INCLUDEPATH += E:\OpenCVforQt\include\opencv
          INCLUDEPATH += E:\OpenCVforQt\include\opencv2

          LIBS += E:\OpenCVforQt\lib\libopencv_core231.dll.a
          LIBS += E:\OpenCVforQt\lib\libopencv_highgui231.dll.a
          LIBS += E:\OpenCVforQt\lib\libopencv_imgproc231.dll.a

          SOURCES += main.cpp
        
        一个例子:

Code Snippet

  1. #include <QtGui/QApplication>

  2. #include <QtGui/QMessageBox>

  3. #include <cv.h>

  4. #include <highgui.h>

  5. using namespace cv;

  6.  

  7. int main(int argc, char *argv[])

  8. {

  9.     QApplication app(argc, argv);       

  10.     Mat giraffe = imread("f:/giraffe.jpg");     

  11.     if(giraffe.empty())

  12.     {

  13.         QMessageBox::warning(0, "Warn""Empty image!", QMessageBox::Ok);

  14.     }

  15.     else

  16.     {

  17.         imshow("giraffe [press any key to exit]", giraffe);

  18.         waitKey();

  19.     }

  20.     return 0;

  21. }



End :

        如果你需要我编译好的文件(win64 for Qt),可以留下邮箱我会即时发给你。