[OpenCV]配置OpenCV的Qt开发环境

本文详细介绍如何在QtCreator环境中配置并使用OpenCV库进行图像处理应用开发,包括下载安装QtCreator、OpenCV及CMake等必备工具,通过CMake编译OpenCV,配置QtCreator的OpenCV开发环境,以及测试代码示例。

1 下载所需工具

(1)Qt Creator 下载地址http://qt-project.org (建议下载最新版本,因为里面带的MinGW版本较高,我最开始使用Qt 4.7.4编译OpenCV-2.4.4一直报错,后来换成Qt 5.0.1编译成功)

(2)OpenCV 下载地址http://opencv.org/(不建议下载最新版本,最新版本的编译需要高版本的MinGW,不然在执行mingw32-make命令会报错)

(3)CMake 下载地址http://www.cmake.org/cmake/resources/software.html

 

2 安装Qt Creator,过程很简单,一直下一步就OK

 

3 安装OpenCV,设置解压路径就OK

 

4 安装CMake,过程同样很简单(注意:(1)安装路径不能有中文和空格(2)勾选加入所有境变量中)

 

5 目前最新的OpenCV版本,安装之后的目录下面有源码和个版本的lib和dll,不过为避免出现问题,还是自己编译

 

6 将C:\Qt\Qt5.0.1\Tools\MinGW\bin加入系统的Path环境变量(假设Qt Creator安装在C盘

 

7 打开CMake,使用CMake编译OpenCV。配置源码路径与生成的目标路径

(1)源码路径:要选择OpenCV安装目录下含有如下文件的文件夹

(2)目标路径:可以随意设置

 

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

 

9 CMake编译结束界面如下图,勾选生成列表中的WITH_OPENGL和WITH_QT两项,其他项最好不要改动

 

10 再次点击Configure按钮,红色消失

 

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

 

12 打开cmd,进入刚才设置的目标路径(C:\OpenCV),输入mingw32-make命令开始编译

 

13 此过程较为漫长,建议关掉杀毒软件可能会快些,在我的ThinkPad T420上耗时30分钟

 

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

 

15 下面开始配置Qt Creator的OpenCV开发环境,拷贝下面三个文件夹放在同一个文件夹下(只需这三个目录,其余生成的文件和文件夹可以删除,以节省磁盘空间)

(1)OpenCV-2.4.4安装目录下的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+=C:\OpenCV\include\opencv\

                    C:\OpenCV\include\opencv2\

                    C:\OpenCV\include

 

LIBS+=C:\OpenCV\lib\libopencv_calib3d244.dll.a\

        C:\OpenCV\lib\libopencv_contrib244.dll.a\

        C:\OpenCV\lib\libopencv_core244.dll.a\

        C:\OpenCV\lib\libopencv_features2d244.dll.a\

        C:\OpenCV\lib\libopencv_flann244.dll.a\

        C:\OpenCV\lib\libopencv_gpu244.dll.a\

        C:\OpenCV\lib\libopencv_highgui244.dll.a\

        C:\OpenCV\lib\libopencv_imgproc244.dll.a\

        C:\OpenCV\lib\libopencv_legacy244.dll.a\

        C:\OpenCV\lib\libopencv_ml244.dll.a\

        C:\OpenCV\lib\libopencv_objdetect244.dll.a\

        C:\OpenCV\lib\libopencv_video244.dll.a

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

INCLUDEPATH+=C:\OpenCV\include\opencv\

                    C:\OpenCV\include\opencv2\

                    C:\OpenCV\include

LIBS+=C:\OpenCV\lib

 测试代码:

#include <QtCore/QCoreApplication>

 #include <opencv2/imgproc/imgproc.hpp> 
 
 #include <opencv2/highgui/highgui.hpp> 
 
 #include <iostream> 
 
 
 
 using namespace cv; 
 
 using namespace std; 
 
 
 
 void help() { 
 
  cout <<"\nDemonstrate Canny edge detection\n"<< endl; 
 
 } 
 
 
 
 int edgeThresh = 1; 
 
 Mat image, gray, edge, cedge; 
 
 
 
 // define a trackbar callback 
 
 void onTrackbar(int, void*) { 
 
  blur(gray, edge, Size(3,3)); 
 
  // Run the edge detector on grayscale 
 
  Canny(edge, edge, edgeThresh, edgeThresh*3, 3); 
 
  cedge = Scalar::all(0); 
 
  image.copyTo(cedge, edge); 
 
  imshow("Edge map", cedge); 
 
 } 
 
 
 
 int main(int argc, char *argv[]) 
 
 { 
 
  //QCoreApplication a(argc, argv); 
 
  char* filename = argc == 2 ? argv[1] : (char*)"fruits.jpg"; 
 
  image = imread(filename, 1); 
 
  if(image.empty()) { 
 
  help(); 
 
  return -1; 
 
  } 
 
  help(); 
 
  cedge.create(image.size(), image.type()); 
 
  cvtColor(image, gray, CV_BGR2GRAY); 
 
  // Create a window 
 
  namedWindow("Edge map", 1); 
 
  // create a toolbar 
 
  createTrackbar("Canny threshold", "Edge map", &edgeThresh, 100, onTrackbar); 
 
  // Show the image 
 
  onTrackbar(0, 0); 
 
  // Wait for a key stroke; the same function arranges events processing 
 
  waitKey(0); 
 
  return 0; 
 
  //return a.exec(); 
 
 } 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值