博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT5.7 deploys opencv2.4.13(the version of opencv is not newer than QT)
阅读量:2399 次
发布时间:2019-05-10

本文共 3345 字,大约阅读时间需要 11 分钟。

Ubuntu下搭建opencv开发环境:

安装适用于python3的opencv:

前言

opencv是一个跨平台计算机视觉库,使用前需要把它编译成二进制的静态库和动态库,之后在代码中直接连接到二进制库,省去了每次都要编译。

网上很多教程都是用cmake配合MinGW编译opencv,其中需要用到命名行操作,其实有更简单的方法,Qt Creator支持cmake,可以直接用Qt Creator在图形界面中编译好opencv。code blocks也支持cmake,不过我没有尝试

对于各个C++ IDE的看法

我试过vs2015,eclipse,code blocks,Qt Creator,各有优缺点。

vs2015

不需要编译opencv,下载opencv for windows有已经编译好的文件可以直接调用;但是我不习惯vs的界面,用起来太麻烦,不适合初学者。并且vs只能在windows上用,我更喜欢多平台通用的IDE。

eclipse

打开界面的速度太慢了,果断放弃。

code blocks

这是一个不错的IDE,虽然界面不太漂亮。但是在编译opencv的过程中总是失败,最终选择了其他IDE。

Qt Creator

最终在Qt Creator上编译opencv成功。Qt Creator的界面很简洁美观,并且适合以后用Qt开发图形交互界面,我选定了Qt Creator作为opencv开发环境。

准备

1. 安装cmake
编译opencv需要用到cmake这个工具。

下载:

建议下载安装版的,这个可以自动加入系统环境变量。

这里写图片描述

安装,选择第二个,为所有用户添加系统路径。之后Qt可以自动找到cmake。
这里写图片描述

  1. 安装Qt Creator
    下载:
    选择离线安装包,在线安装太慢,经常会安装失败。

选择MinGW版本,VS 版本还需要安装对应的VS,单独安装Qt 是不可用的,而MinGW版本自身带有MinGW。

建议下载最新版本,因为里面带的MinGW版本较高,如果MinGW版本比opencv需要的版本底会编译失败。

这里写图片描述

安装:安装路径不能有空格,我安装在默认路径,然后一路NEXT。

  1. 下载opencv
    下载opencv for Linux

opencv for windows跟opencv for Linux的源码是一样的,只是

opencv for windows里面多了以编译好的opencv,这个我们不需要,只要下载源码就行了。

如果编译失败,试试换用其他版本的opencv。

我在Ubuntu上编译3.1版失败,编译2.4.13和3.0.成功,在windows上编译3.1成功,3.0却失败,试了不少于10次,之后才意识到跟MinGW版本有关,MinGW版本要跟opencv版本对应才能编译成功。

这里写图片描述

编译opencv
确认Qt成功找到cmake
打开Qt Creator,工具->选项->构建和运行->CMake,如果之前CMake配置好了系统路径,这里应该会自动加载到系统路径,否则手动指定cmake的路径。
这里写图片描述

用Qt打开opencv项目

【Open Project】打开opencv的CMakeLists.txt

这里写图片描述

之后会出现一个Configure Project窗口,配置编译时产生的中间文件保存的路径,这些不用改,直接点击Configure Project按钮。中间文件会保存在跟opencv的文件夹在同一路径的一个文件夹,编译完删掉就好了。

进入【项目】,编译构造配置选择Release。

这里写图片描述

然后等几分钟,这段时间Qt正在读取CMakeLists.txt文件,当在概要信息看到Configuring done和Generating done就读取完了。

这里写图片描述

进入【项目】,找到CMAKE_INSTALL_PREFIX,设置一个路径,这个路径是编译完成后输出的路径。其他配置保持默认。然后点击 Apply Configuration Changes。未保存的内容会是粗体字,已改变的配置将会是斜体字,再点一次Apply Configuration Changes,Apply Configuration Changes按钮将会变成灰色。
这里写图片描述

再到构建步骤,详情,勾选install,然后点右下角的“锤子”,开始构建。这个过程会花半个小时左右,当编译输出中显示“正常”退出,表示构建成功,在CMAKE_INSTALL_PREFIX路径中可以看到产生的文件。如果编译失败,则换个opencv版本,重新尝试。

这里写图片描述

配置opencv开发环境

编译好的opencv会有以下这些文件夹,把这些文件放到合适的位置。我就放在c盘opencv文件夹里了。
这里写图片描述

配置opencv系统路径

对计算机右键->属性->高级系统配置->环境变量>Path变量里加入opencv的bin文件夹的路径,用分号跟其他路径分隔。

这里写图片描述

新建Qt项目
建立Qt console Application或其他项目->empty qmake project。Qt console Application会生成一个cmd窗口,而empty qmake project就全是空的,手动添加源文件。
这里写图片描述

给qt项目添加头文件路径和静态库路径

这里写图片描述
在.pro文件中添加以下代码。每次新建项目都要添加,好在复制粘贴很方便。不同版本opencv的静态库的文件名不一样,需要注意。

INCLUDEPATH += D:/QT/opencv/include \D:/QT/opencv/include/opencv \D:/QT/opencv/include/opencv2LIBS += -LD:/QT/opencv/build/x64/vc2/lib/ -llibopencv_calib3d2413.lib\-llibopencv_core2413.lib\-llibopencv_contrib2413.lib\-llibopencv_features2d2413.lib\-llibopencv_flann2413.lib\-llibopencv_gpu2413.lib\-llibopencv_highgui2413.lib\-llibopencv_imgproc2413.lib\-llibopencv_legacy2413.lib\-llibopencv_ml2413.lib\-llibopencv_objdetec2413.lib\-llibopencv_photo2413.lib\-llibopencv_stitching2413.lib\-llibopencv_superres2413.lib\-llibopencv_ts2413.lib\-llibopencv_video2413.lib\-llibopencv_videoio2413.lib\-llibopencv_videostab2413.lib\

测试

新建一个empty qmake project,写入以下代码,cvLoadImage( )函数里填入一张照片的路径,如果能编译成功并显示照片就配置成功了。
注意文件的路径是正斜杠,不是windows路径的反斜杠,如果用反斜杠得这样写:”D:\Pictures\RoboMasters.jpg”

include “opencv/highgui.h”

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

{
IplImage* img = cvLoadImage(“D:/Pictures/RoboMasters.jpg”);
if (img == NULL)
return 1;
cvNamedWindow(“abc”,CV_WINDOW_AUTOSIZE);
cvShowImage(“abc”,img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyAllWindows();
return 0;
}

最后将install文件夹下面的“include”“lib”“bin”单独取出作为QT调用的库文件,然后将bin的路径加入到环境变量中,就OK啦

参考:

转载地址:http://hvjob.baihongyu.com/

你可能感兴趣的文章
MySQL问题两则
查看>>
MySQL执行计划explain的key_len解析
查看>>
基于Oracle的私有云架构探析(连载一)
查看>>
ASM 翻译系列第十弹:ASM Internal ASM DISK header
查看>>
ASM 翻译系列第一弹:基础知识 ASM AU,Extents,Mirroring 和 Failgroups
查看>>
MySQL排序内部原理探秘
查看>>
ASM 翻译系列第八弹:ASM Internal ASM file extent map
查看>>
利用sys schema解决一次诡异的语句hang问题
查看>>
数据库容器化|未来已来
查看>>
容器化RDS|计算存储分离架构下的 IO 优化
查看>>
MySQL 5.7复制配置不规范修改导致的坑(一)
查看>>
MySQL8.0——Resource Group(资源组)
查看>>
基于Oracle的私有云架构探析(连载二)
查看>>
MySQL分区如何迁移
查看>>
Oracle压缩黑科技(一)—基础表压缩
查看>>
容器化RDS—计算存储分离架构下的“Split-Brain”
查看>>
挽救DG中主库的nologging操作的块
查看>>
容器化RDS:PersistentLocalVolumes和VolumeScheduling
查看>>
关于legacy system中使用bind variables(zt)
查看>>
mysql执行命令报segmentation fault 错误
查看>>