推广 热搜: LabVIEW  控制  自动化  电子  自动  软件  sci  机器视觉  编程  视觉 

OpenCV与Qt的环境搭建及Demo

   日期:2018-08-15     浏览:62    评论:0    
核心提示:前言:前段时间写了很多OpenCV的程序,虽然重点在算法上,但图像窗口只能靠cvNamedWindow,效果很不理想。遂希望用Qt配合OpenCV
 

前言:

前段时间写了很多OpenCV的程序,虽然重点在算法上,但图像窗口只能靠cvNamedWindow,效果很不理想。遂希望用Qt配合OpenCV使用,为我的程序建立图形化界面。然而,依我对OpenCV的了解,环境配置一定是玄学,在解决了多个问题后,终于实现了Demo,在这里分享下我的成果,也感谢文末参考资料中的各位博主。

 

Qt在Windows环境下有两种编译方式,MinGW和msvc。msvc就是微软的VC运行库,只要安装了Visual Studio就自带了,在编译速度上比较有优势。缺点是,采用msvc编译的话,需要单独安装cdb调试工具,才能在Qt中进行单步调试,本文将采用Win10 64bit+opencv 2.4.10 + Qt5.8.0 + VS2013配置环境。

 

第一步:安装与配置OpenCV

在此,我们假设你的电脑上已经安装了Visual Studio,本文将不再赘述。因为某些历史问题,我的OpenCV的版本为2.4.10,如果你的版本也是2.x.x,那么你可以直接将2410替换成你的版本。

  1. 从http://opencv.org/downloads.html下载OpenCV并解压到一个目录中,我们假设解压到了"D:\opencv\"中。
  2. 配置环境变量,在系统->高级系统设置->环境变量->系统变量中,找到Path,并添加"D:\opencv\build\x64\vc12\bin"。请注意上面路径中的x64/vc12是需要根据你系统的版本自行替换的。

 

第二步:安装与配置Qt

  1. 从https://account.qt.io/downloads下载Qt,并注册账户、开始安装。注意在安装过程中需要选择MSVC2013 64bit的kit,当然,这也需要根据你系统的版本进行替换。
  2. 新建一个Qt Widges Application,注意勾选VSVC2013。如果一切就绪,Qt Creator中应该为下图所示。
  3. 可以看到,一个简单的Qt项目由.pro文件,头文件、源文件、界面文件组成,今后我们都将用到。我们需要从.pro文件开始修改

 

第三步:配置开发环境

.pro文件与vs中的属性表类似,决定了项目需要的头文件、依赖项的位置。在这一步我用来相当多的时间来找到合适的配置,一个典型的配置表如下所示:

复制代码
INCLUDEPATH += D:/opencv/build/include   ConFIG(debug, debug|release): { LIBS += -LD:/opencv/build/x64/vc12/lib \ -lopencv_core2410d \ -lopencv_imgproc2410d \ -lopencv_highgui2410d \ -lopencv_ml2410d \ -lopencv_video2410d \ -lopencv_features2d2410d \ -lopencv_calib3d2410d \ -lopencv_objdetect2410d \ -lopencv_contrib2410d \ -lopencv_legacy2410d \ -lopencv_flann2410d } else:ConFIG(release, debug|release): { LIBS += -LD:/opencv/build/x64/vc12/lib \ -lopencv_core2410 \ -lopencv_imgproc2410 \ -lopencv_highgui2410 \ -lopencv_ml2410 \ -lopencv_video2410 \ -lopencv_features2d2410 \ -lopencv_calib3d2410 \ -lopencv_objdetect2410 \ -lopencv_contrib2410 \ -lopencv_legacy2410 \ -lopencv_flann2410 }
复制代码

请注意,在绝大多数情况下这个配置需要经过修改才能使用!与之前一样,我们依然假设你的安装目录在"D:\opencv"所以如果不符,需要将三处目录位置全部修改。另外开头提到过,我的版本为2.4.10,所以如果版本不符,则需要将2410替换成其他数字。如果你的系统为x86,则需要修改目录中的x64为x86。

在执行完上述操作后,需要点击Qt Creator中的构建->执行qmake来更新程序的依赖。

 

为了快速验证环境是否配置正确,我们用一段简单的程序来验证可否使用opencv

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <opencv2/opencv.hpp>
 
using namespace std;
using namespace cv;
 
int main(int argc, char *argv[])
{
     Mat image = imread("D:\\test.jpg");
     cvNamedWindow("window", CV_WINDOW_NORMAL);
     imshow("window",image);
     waitKey(0);
 }

点击运行之后,如果没有任何错误,可以显示图片,那么环境安装成功,如果出现错误,我们需要进行排查。

1.提示没有找到opencv.hpp

这种情况说明include path设置有问题,请检查是否正确。如果是正确的却依然报错,请重新qmake、构建程序。

2.提示多条LKN错误,”无法找到入口“之类的

这种情况通常是因为Lib设置错误,请检查位置是否正确、版本是否正确。更正后重新qmake。

3.编译可以通过,但是提示程序crash

如果确认没有1、2中提到的问题,请检查环境变量是否正确,如果正确却依然报错,请注销用户后重新登陆,使环境变量生效。

4.程序运行后崩溃,提示OpenCV Error: Assertion failed (size.width>0 && size.height>0)

如果确认你的test.jpg可以读取,那么可能遇到了跟我一样的问题。在Qt的.pro文件中,一定要注意区分debug模式带d的lib与release模式的lib,如果两者没有用指令判断,那么很有可能可以通过编译运行,但会出现类似于这种的奇怪错误。解决方法综合2、3,重点检查lib文件与系统环境变量是否正确。版本错误、路径错误、x86与x64错误都可能导致类似的问题出现。

 

第四步:配置debugger

1.安装cdb

首先下载Debugging tools for Windows,选择本机安装,之后只选择安装Debugging Tools for Windows即可。

 

2.配置Qt

选择工具->选项->构建和运行。如果没有自动检测到安装的cdb,那么手动添加一个即可,只需要选择cdb安装位置中的cdb.exe即可,Qt会自动检测到类型版本等数据。

最后,添加一个断点试验一下

如果一切正常,那么恭喜你已经成功配置了opencv。当然,一次成功的可能性很小,往往需要我们耐下心来,反复调试。

 
打赏
 
更多>同类编程
0相关评论

推荐图文
推荐编程
点击排行

网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报