做个总结吧,基本上所有的vs版本和opencv配置都是一样的步骤。
最直接的是在官网下载:https://opencv.org/releases/ ,不过官网国内访问会比较慢,还可以直接在github上下载:https://github.com/opencv/opencv/tags 。
这里以opencv4.3为例,windows环境下下载.exe后缀的即可。
下载后双击解压:
可以看到,解压后的opencv build目录下,只有x64的库,如果需要x86的,可以在源码上再编译。
打开系统的环境变量。
在系统“Path”路径下添加opencv的bin目录。
注意:opencv\build\x64目录下,存在vc14和vc15两个文件夹,vc14对应的是vs2015,vc15对应的是vs2017。
我们来看一下bin目录下是什么吧,实际上就是一些dll动态库,如果不想添加在系统变量中,仅针对某个项目适用的话,可以把dll库放在工程执行目录同级目录下(便于发布版本)。
在vs2017中选择“文件”->“新建”->“项目”,选择Visual C++,空项目,设置好名称和位置就好了。
然后在项目上右键选择属性。
或者在菜单栏选择项目->属性。
在属性页面,首先需要配置平台属性,配置是Debug还是release,平台是x86还是x64,(x86需要自编译)然后在VC++目录中, 配置包含目录和库目录。
包含目录中是opencv的头文件路径,具体就是:
D:\software\opencv\opencv43\build\include
D:\software\opencv\opencv43\build\include\opencv2
库目录,就是lib库的路径。
D:\software\opencv\opencv43\build\x64\vc15\lib
然后在链接器->输入->附加依赖项中给出opencv依赖的具体lib名称。
opencv_world430d.lib
配置release模式下的属性表步骤和上面完全一样,唯一不同的是最后填写的是opencv_world430.lib
完成上述步骤之后,一般运行还会报错,缺少dll文件,解决办法是:
1)把opencv43\build\x64\vc15\bin目录下的
opencv_world430d.dll和opencv_world430.dll复制到C:\Windows\SysWOW64。
2)把opencv43\build\x64\vc15\bin目录下的
opencv_videoio_ffmpeg430_64.dll复制到C:\Windows\System32
3)如果还是缺少dll文件,就分别在SysWOW64和System32下各放一份。
新建一个c++文件。
#include
#include
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("d://pic//test.jpg");
imshow("0", img);
waitKey(0);
return 0;
}
注意选择好debug或者release,平台是x64,能够正常显示图片说明配置成功。
可以发现opencv配置起来还是有点麻烦的,而目前这个配置只针对当前项目有效,如果新建一个项目,就不可以用了,如下图。
再配置一遍就太不人性化了,这时候我们可以把配置好的属性表保存下来,回到刚配置好的工程项目中,打开属性管理器,在debug | x64属性文件夹右键选择添加新项目属性表。
取个名字吧,比如opencv.props
然后双击opencv属性表,重复刚才的配置,配置包含目录,库目录,附加依赖项。
然后就可以在工程目录下找到这个属性表,新的项目就可以直接加载了。
(PS:如果需要保存属性表以便新项目用的话,建议一开始就添加新的属性表,配置,就不用重复配置了。。。直接配置的属性在Microsoft.Cpp.x64.user里面,这家伙保存不了啊,别的项目用不了,所以需要新建一个。。。。)
假如我们用opencv写好了一个程序,想要给别人用,如果别人没有配置好opencv就用不了啊,
这时候其实只需要把相关的dll文件放在exe目录下就好了。
还有一点需要注意,发布版本的时候不可以再使用绝对路径, 比如
Mat img = imread("d://pic//test.jpg");
别人不一定有这个文件夹,
所以需要使用相对路径,打开属性页面,选择调试->工作目录->可以设置为上一级目录下的workspace文件夹为工作目录。
这样只要把图片放在 workspace下面,就可以直接访问到了。
OK!