vs2017 cmake opencv教程心得 以及在VS2017与QT5上的配置

这几天都在编译opencv,用cmake编译没报错,一用vs编译的时候就出问题,找不到"opencv_world.dll"文件,挺糟心的,现在把自己的教程写下来。
环境:

  1. vs2017
  2. opencv3.4
  3. contrib
  4. cmake3.10

1 下载所需的各种文件
vs什么的默认安装好了。
open官网:opencv

contrib:contrib链接
cmake:cmeke
当然你可以选择其他版本。
其中opencv实际就是个压缩包,contrib是个压缩文件,cmake可以选择msi安装文件,或则是zip绿色无安装文件。为安全使用,请不要放入中文路径。
将opencv,contrib放入同一个文件夹内,并新建一个空目录存放擦马克后的文件,我的是“msvc_2017”。
在这里插入图片描述
2. cmake编译
在这里插入图片描述
第一步实际是选择cmake的源代码路径和输出路径选择。看上图可以看到,我的源代码路径是“E:\Opencv\opencv3.4.0\opencv\sources”,也就是选择OpenCV解压后的sources文件夹,输出是自己新建的“msvc_2017”空文件夹。

第二步是点击configure配置一下,配置自己编译器,我的是VS2017 64位,选择的是“vs2017 Win64”再次点击configure配置一下。就会出现上图中的结果。有许多的红色,这些是需要配置的选项。这里我勾选了”BUILD_opencv_world",这个选项的目的是将生成链接文件打包成一个opencv_world,而不是许许多的链接库。这么做配置简单,缺点是会有些资源浪费。在这步,需要做些配置修改,比如说在“WITH”目录下勾选“WITH_OPENGL”、“WITH_CUDA”等。这里,将勾选的"WITH_CUDA"取消。

第三步然后再次点击configure配置一下,这步会对你在第二步做的选择进行一些设置,同时需要下载一些文件,所以有些慢。这么配置可以看需求更改。如果选择了些你没有安装的配置,比如你勾选了"WITH_CUDA"但是却没有安装CUDA,或者环境没配好,在这步很容易出错。
第四部是点击“Generate”生成对应的工程对象。也就是vs2017项目之类的。完成后的图如下:
在这里插入图片描述
注意:
不要在删掉输出目录文件后,再配置生成,没用的,会报错,最好的做法还是新生成一个输出目录。

在几次编译中,我用cmake生成都没有问题,但在vs2017中编译时,总是出现生成opencv_world文件无法连接到。在目录下搜索也根本找不到该dll文件。没有这个文件自然也就链接不上。这里建议不要选“CUDA”。貌似我就是勾选了就出问题。
在这里插入图片描述
3. 编译opencv.sln
可以在cmake里直接点击“open project”(generate右边),也可以在输出目录“mfvc_2017”下打开“OpenCV.sln”。
在这里插入图片描述
可以看到输出的项目里是没有“install”目录的。
先生成install 目录下的dll文件——>‘“opencv_world.dll”。在解决方案里的CMakeTargets里右键点击’‘INSTALL’’,选择“重新生成”,可以看到经过一段时间的编译后,目录下多了个“install”
在这里插入图片描述
而在install目录下是这样的;和opencv解压后的build类似里面包含了我们需要的库文件。
在这里插入图片描述
然后在选择ALL_BUILD。
在这里插入图片描述
全程无错,编译生成。

注意

  • cmake配置是不要勾选“CUDA”,我的一勾选就卡主不动了
  • 不要批生成,后果就是直接生成解决方案,找不到DLL文件,错误一堆。先INSTALL构建一下,生成所需的包,在全部生成。INSTALL构建完,后在目录下有“install”的文件夹在这里插入图片描述
    配置vs2017
    这个其实不用多说,百度都有很多。
    1)配置Path系统环境变量
    此电脑–>右键“属性”–>高级系统设置–>环境变量–>新建:E:\opencv3.4.0\msvc2017_64\install\x64\vc15\bin (配置动态链接库)

2)包含目录 配置:
VC++目录—>包含目录:
E:\opencv3.4.0\msvc2017_64\install\include ;
E:\opencv3.4.0\msvc2017_64\install\include\opencv;
E:\opencv3.4.0\msvc2017_64\install\include\opencv2

3)库目录 配置:
VC++目录—>库目录:
E:\opencv3.4.0\msvc2017_64\install\x64\vc15\lib

4)链接器 配置:
链接器–>输入–>附加依赖项
opencv_world340.lib
opencv_world340d.lib

测试代码

#include<opencv2\core.hpp>
#include<opencv2\highgui.hpp>

using namespace cv;

int main()
{
	Mat img = imread("D:\\datasets\\cat.jpg");
	namedWindow("noticeable");
	imshow("noticeable", img);
	waitKey(6000);
	return 0;
}

Qt5配置
使用PRI文件进行配置。

  1. 可以在任意位置新建一个pri文件,不过这里我在QT的安装目录下新建了一个opencv文件夹,在文件夹下新建了一个opencv.pri的文件。在这里插入图片描述
  2. 打开文件(本身就是个文本文件),输入:
INCLUDEPATH += E:/opencv3.4.0/msvc2017_64/install/include
Debug:{
    LIBS += -lE:/opencv3.4.0/msvc2017_64/install/x64/vc15/lib/opencv_world340d
}
Release:{
    LIBS += -lE:/opencv3.4.0/msvc2017_64/install/x64/vc15/lib/opencv_world340d
}

注意修改自己的文件路径(cmake后的输出),我的在E盘,所以有3个E。
3. 新建一个Qt项目,注意选好编译器,msv2017 64bit这里我新建了一个mainwindow,结果如下:
在这里插入图片描述
打开pro文件,在文件最后添加:include(D:/Qt/Qt5.9.5/opencv/opencv.pri),也就是刚才创建的pri文件。
在这里插入图片描述
4. 在build(构建)中执行qmake。
5. 测试环境,打开main.cpp,修改为:

#include<QCoreApplication>
#include "opencv2/opencv.hpp"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    using namespace cv;
    Mat img = imread("D:\\datasets\\cat.jpg");
    imshow("Output",img);

    return a.exec();
}

修改为自己的路径,出图。
在这里插入图片描述

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值