OpenCV 3.0.0 支持的Qt开发环境

1 下载所需工具
(1)Qt Creator 下载地址http://qt-project.org (建议下载最新MinGW 5.5.0版本)
(2)OpenCV 下载地址http://opencv.org/ (下载最新版本的3.0.0版本)
(3)CMake 下载地址http://www.cmake.org/cmake/resources/software.html (版本最新的即可)

2 安装Qt Creator, 过程很简单, 一直下一步就OK, 我的路径为U:\dev\Program\Qt\5.5.0

3 安装OpenCV, 运行opencv-3.0.0.exe, 设置解压路径就OK, 我的路径为U:\dev\Program\OpenCV

4 安装CMake, 解压到路径即可U:\dev\Program\cmake-3.3.0-rc3-win32-x86

5 目前最新的OpenCV版本, 安装后有lib和dll, 但是慎重起见还是自己编译一下吧

PS: 因为我的环境是安装的网络盘上的, 为U:\dev\Program\下

6 增加环境变量设置脚本(这里包含了我的Java等路径,不需要的可以找到Java相关的进行删除)
(1)setenv.bat

echo off
echo Setting up environment for Dev usage...
cd /D U:\dev
set DIR=%cd%
cd Program
set JAVA_HOME=%DIR%\Program\Java\jdk1.8.0_31
set PATH=%DIR%\Program\ruby-2.2.1-x64-mingw32\bin;%DIR%\Program\Python34;%DIR%\Program\Python34\Scripts;%DIR%\Program\PHP;%DIR%\Program\MariaDB\bin;%JAVA_HOME%\bin;%DIR%\Program\Qt\5.5.0\5.5\mingw492_32\bin;%DIR%\Program\Qt\5.5.0\Tools\mingw492_32\bin;%DIR%\Program\cmake-3.3.0-rc3-win32-x86\bin;%DIR%\service;%PATH%
cd /D %DIR%\Program

(2)新建cmd的快捷方式
C:\Windows\System32\cmd.exe /A /Q /K U:\dev\Program\setenv.bat

7 打开cmd的快捷方式,运行cmake-gui, 使用CMake编译OpenCV。配置源码路径与生成的目标路径
(1) sources/cmake/OpenCVCompilerOptions.cmake
找到 add_extra_compiler_option(-Werror=non-virtual-dtor)
注释掉,变成: #add_extra_compiler_option(-Werror=non-virtual-dtor)
(2) 源码路径:要选择OpenCV安装目录下含有如下文件的文件夹
(3) 目标路径:可以随意设置, 我的路径U:\dev\Program\OpenCV\bin\mingw492_32
cmake-gui-1

8 点击Configure配置按钮。在弹出的对话框中选择MinGW makefiles, 其余选项保持默认, 点击Finish按钮, 开始编译
cmake-gui-2

9 CMake编译结束界面中勾选生成列表中的WITH_OPENGL和WITH_QT两项, 并且去掉勾选WITH_IPP, 其他项最好不要改动

10 再次点击Configure按钮, 红色消失
cmake-gui-3

11 点击Generate按钮, 生成makefile文件, 成功后, 底下会提示Generating done
cmake-gui-4

12 进入刚才设置的目标路径(U:\dev\Program\OpenCV),输入mingw32-make命令开始编译
cmake-gui-5

13 此过程较为漫长, 建议关掉杀毒软件可能会快些,

14 执行mingw32-make install,此过程大约需要1到2分钟

15 下面开始配置Qt Creator的OpenCV开发环境, 拷贝下面三个文件夹放在同一个文件夹下(只需这三个目录, 其余生成的文件和文件夹可以删除, 以节省磁盘空间)
(1)OpenCV-3.0.0安装目录下的build/include目录
(2)CMake目标路径下, MinGW编译后的bin目录
(3)CMake目标路径下, MinGW编译后的lib目录

16 拷贝三个目录到同一目录后的结构如下图(我删除了原来的CMake目标目录中的其他目录, 拷贝进来了include目录)

17 将bin目录添加到系统环境变量

18 至此Qt Creator下的OpenCV开发环境已经配置好, 下面在Qt Creator下测试是否已经配置成功

19 打开Qt Creator, 新建一个空工程, 然后添加一个cpp文件, 任意命名

20 在pro文件中添加如下OpenCV的依赖文件

INCLUDEPATH+=U:\dev\Program\OpenCV\build\include\opencv\
             U:\dev\Program\OpenCV\build\include\opencv2\
             U:\dev\Program\OpenCV\build\include

LIBS+=U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_calib3d300.dll.a\
      U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_contrib300.dll.a\
      U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_core300.dll.a\
      U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_features2d300.dll.a\
      U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_flann300.dll.a\
      U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_gpu300.dll.a\
      U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_highgui300.dll.a\
      U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_imgproc300.dll.a\
      U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_legacy300.dll.a\
      U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_ml300.dll.a\
      U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_objdetect300.dll.a\
      U:\dev\Program\OpenCV\bin\mingw492_32\lib\libopencv_video300.dll.a

备注:其实有种简单的做法, 但是有个缺点是可能包含链接库较多

INCLUDEPATH+=U:\dev\Program\OpenCV\build\include\opencv\
             U:\dev\Program\OpenCV\build\include\opencv2\
             U:\dev\Program\OpenCV\build\include
LIBS+=U:\dev\Program\OpenCV\bin\mingw492_32\lib

21 main.cpp文件中内容如下

#include"cv.h"
#include"cxcore.h"
#include"highgui.h"

int main(int argc,char* argv[])
{
    //声明IplImage指针
    IplImage*pImg;
    //载入图片
    pImg=cvLoadImage("U:\dev\application\opencv\images\liuyan.jpg",1);
    //创建窗口
    cvNamedWindow("Image",1);
    //显示图像
    cvShowImage("Image",pImg);
    //等待按键
    cvWaitKey(0);
    //销毁窗口
    cvDestroyWindow("Image");
    //释放图像
    cvReleaseImage(&pImg);
    return0;
}

22 运行程序, 按键盘上任意键可以退出

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在C/C++分类目录。将固定链接加入收藏夹。