Win7平台下 opencv2.4.11+CMake+Qt5.8.0 开发环境配置

来源:互联网 发布:中国程序员太多了 编辑:程序博客网 时间:2024/05/03 02:33
为了把代码往arm-linux移植,准备先用qt来重新编译代码。结果用了整整一天半的时间,终于配置成功了。
其中的过程是一步一个坎,极为坎坷,看博客看得要吐,部分环节投机取巧,所幸最后配置成功。
现在就把这一天半以来的配置历程总结一下,也为大家提供借鉴。第一次此写技术博文,多有不足之处,望大家指出改正。

第一步:下载并安装opencv2.4.11,Qt5.8.0,CMake(https://cmake.org/)。Qt要下载mingw版本。
注意:安装时要看好路径,为了小心起见,所有的程序都安装在路径名称上没有汉字、空格、或特殊符号的文件夹中。
第二步:配置qt的环境变量。
             在path变量下添加 qmake和cmake的路径
             添加qt变量
注意:这里推荐一款小软件,可以很方便直观的实现添加变量和路径:www.rapidee.com 。

第三步:利用CMake配置Opencv(关键步骤)
             现在下载的CMake都是免安装版,解压以后就是一个文件夹。在文件夹里的bin文件下,找到cmake-gui 打开。
             
            会出现以下界面,在source code 里添加opencv2.4.11目录下的sources文件,在build the binaries 里选择一个新建的文件夹即可。注意全要用英文。
             
             点击configure,在下拉菜单里选择MinGW Makefiles,按finish开始编译。
             
             
网上很多的人直接在这里编译之后就得到了预期的结果,但我在这一步遇到了很大的问题。
CMake显示编辑失败,显示 CMAKE_MAKE_PROGRAM not found。
解决办法为: 将NOTFOUND 改为cmake -D"CMAKE_MAKE_PROGRAM:PATH=D:\QtMing5.8.0\Tools\mingw530_32\bin\mingw32-make,即可继续进行编译。后来发现,这个问题主要是因为Qt环境变量路径的配置有问题。
             
              若一切顺利,应该获得如下结果:
              
              点击with,勾选 openGL和Qt,点击configure,若有红色选框,就再configure一次,得到以下结果:
               
               最后,点击generate,等到 generating done之后,出现以下界面:
              
             至此,Cmake-gui的工作完成。
注意:在生成makefile文件的时候,可能会出现“Found unsuitable Qt version “” from NOTFOUND, this code requires Qt 4.x”的问题。发现在cmake/share/cmake-32-modules/目录下只存在findqt4.cmake,不存在findqt5.cmake。解决方法为在
http://svn.osgeo.org/ossim/trunk/ossim_package_support/cmake/CMakeModules/FindQt5.cmake复制findqt5.cmake内容,
用notepad打开findqt4.cmake,用qt5的的内容替换qt4的内容,保存后即可使用。

第四步:配置生成opencv二进制文件。
             打开刚才自定义的文件夹,按住shift键右击,选择“在此处打开命令窗口”。敲入 mingw32-make命令运行。此运行过程比较长,可能会持续半个小时以上。
             
             待达到100%时生成结束,敲入mingw32-make install命令,将生成的opencv二进制文件存到install文件夹内。最终,可以在文件根目录\install\x64\mingw看到lib与 
             bin两个文件夹。 将两个文件夹复制。
             
            在opencv安装目录下找到build\include文件并将其复制。
            把这三个文件夹同时粘贴到一个新文件夹中,注意,此文件夹路径不允许有汉字,空格,以及各种符号。
            
           在path环境变量下配置bin文件夹的路径。
           至此,有关opencv2.4.11的qt开发环境配置工作结束。
注意:此处有可能会出现一个问题,我遇到了此文件夹下根本就不存在mingw32-make.exe的情况。此问题的解决方案十分暴力,到Qt根目录下的tool文件夹里吧mingw32-make.exe直接复制粘贴过来,再次运行mingw32-make命令,即可实现同样的功能。

第五步:验证配置效果
             新建qt工程,在.pro文件中添加以下代码:
            
 INCLUDEPATH+=D:\opencvcm\include\opencv\             D:\opencvcm\include\opencv2\             D:\opencvcm\include\             LIBS+=D:\opencvcm\lib\libopencv_calib3d2411.dll.a\                         D:\opencvcm\lib\libopencv_contrib2411.dll.a\                         D:\opencvcm\lib\libopencv_core2411.dll.a\                         D:\opencvcm\lib\libopencv_features2d2411.dll.a\                         D:\opencvcm\lib\libopencv_flann2411.dll.a\                         D:\opencvcm\lib\libopencv_gpu2411.dll.a\                         D:\opencvcm\lib\libopencv_highgui2411.dll.a\                         D:\opencvcm\lib\libopencv_imgproc2411.dll.a\                         D:\opencvcm\lib\libopencv_legacy2411.dll.a\                         D:\opencvcm\lib\libopencv_ml2411.dll.a\                         D:\opencvcm\lib\libopencv_objdetect2411.dll.a\                         D:\opencvcm\lib\libopencv_video2411.dll.a\                         D:\opencvcm\lib\libopencv_nonfree2411.dll.a\                         D:\opencvcm\lib\libopencv_ocl2411.dll.a\                         D:\opencvcm\lib\libopencv_photo2411.dll.a\                         D:\opencvcm\lib\libopencv_stitching2411.dll.a\                         D:\opencvcm\lib\libopencv_superres2411.dll.a\                         D:\opencvcm\lib\libopencv_videostab2411.dll.a\ 

         
            在cpp文件中敲入测试代码:           
           
      #include <opencv2/opencv.hpp>      #include <opencv2/core/core.hpp>      #include <opencv2/highgui/highgui.hpp>      using namespace cv;      using namespace std;      int main()      {          Mat src = imread("1.jpg",1);          imshow("src",src);                    waitKey(0);                    return 0;      }
 
            运行代码,若能显示图片则证明配置成功。
            
注意:在qt的IDE中,要把实验图片存放在build-again-Desktop_Qt_5_8_0_MinGW_32bit-Debug文件夹下,不要存放在.cpp文件所位置。否则opencv会报错,找不到目标图片。
           

主要参考资料:http://lib.csdn.net/article/opencv/39077
                              http://blog.csdn.net/dopamy_busymonkey/article/details/44857427
                              http://stackoverflow.com/questions/6141608/cmake-make-program-not-found
                      http://blog.csdn.net/qiurisuixiang/article/details/8665278   
                              http://blog.sina.com.cn/s/blog_5c70dfc80100qwi3.html
                             《Opencv图像处理》葛罗瑞亚·布埃诺·加西亚、奥斯卡·德尼茨·苏亚雷斯等著。
                             《OPencv3编程入门》毛星云等编著。
                
1 0