Visual Stdio安装并配置OpenCV
本文阐述了如何下载OpenCV视觉库,VS如何配置OpenCV的多种方式,及如何以预编译指令链入依赖项。
前言:
本文阐述了如何下载OpenCV视觉库,VS如何配置OpenCV的多种方式,及如何以预编译指令链入依赖项,同学们可以据情况选择。文中以VS2019示例,其余版本也大致相同。
目录
1 安装OpenCV
1.1 手动
OpenCV官网直接下载对应版本,嫌慢也可以找找国内的服务器资源。
1.2 自动管理
如果有软件包管理工具,如Linux的apt-get,Mac的Homebrew,一条指令即可完成安装。以Mac系统的Homebrew举例,终端输入 brew install opencv 即可。
可惜Windows系统没有统一的软件管理工具,不过我倒是使用了一款chocolatey工具,

用来下载sdk,gcc,git,opengl,及动态库文件等都很方便。
2. OpenCV文件
下载好后,在 “下载路径\opencv\build” 下存在如下内容:
include文件:包含opencv库的头文件
x64文件:v14对应VS2015,v15对应VS2017,VS2019使用v15即可
· bin文件:动态库文件(.dll)
· lib文件:静态库文件(.lib),其中opencv_world460.lib与opencv_world460d.lib这两个版本的文件,分别对应在VS项目配置下Release模式与Debug模式,只有一个版本的文件均要导入。
3. 配置系统环境变量
为保证程序运行可以找到dll文件,将 ...\bin 路径加入到环境变量Path中。
4. VS配置OpenCV
打开Visual Stdio工程
4.1 配置头文件路径
右键项目>>属性>>C/C++>>附加包含目录>>编辑

4.2 配置依赖库路径
右键项目>>属性>>链接器>>常规>>附加库目录下拉>>编辑

4.3 配置依赖项
介绍两种链接静态库的方式。
4.3.1 导入静态库文件
右键项目>>链接器>>输入>>附加依赖项下拉>>编辑

· opencv—.lib Release模式
· opencv—d.lib Debug模式
4.3.2 创建配置头文件
如果你的lib文件夹下存在多个静态库文件,则需要全部导入。

在实际工程中,则是以创建配置头文件来导入这些依赖库文件。当然,上面的方法也可行,但切换Release/Debug时需大量改动,且配置麻烦。而配置头文件,修改预编译代码即可,内容如下:
右键头文件目录(自选)>>添加>>新建项>>头文件(.h)
// CVConfig.h
#pragma once
#ifndef OPENCV_CONFIG_H_
#define OPENCV_CONFIG_H_
#define USING_OPENCV430
#ifdef USING_OPENCV430
#include "opencv2/opencv.hpp"
#include "opencv2/core/core_c.h"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/highgui/highgui_c.h"
#pragma comment(lib, "ade.lib")
#pragma comment(lib, "ippicvmt.lib")
#ifdef _DEBUG
#pragma comment(lib, "IlmImfd.lib")
#pragma comment(lib, "ippiwd.lib")
#pragma comment(lib, "ittnotifyd.lib")
#pragma comment(lib, "libjasperd.lib")
#pragma comment(lib, "libjpeg-turbod.lib")
#pragma comment(lib, "libpngd.lib")
#pragma comment(lib, "libprotobufd.lib")
#pragma comment(lib, "libtiffd.lib")
#pragma comment(lib, "libwebpd.lib")
#pragma comment(lib, "opencv_img_hash430d.lib")
#pragma comment(lib, "opencv_world430d.lib")
#pragma comment(lib, "quircd.lib")
#pragma comment(lib, "zlibd.lib")
#else
#pragma comment(lib, "IlmImf.lib")
#pragma comment(lib, "ippiw.lib")
#pragma comment(lib, "ittnotify.lib")
#pragma comment(lib, "libjasper.lib")
#pragma comment(lib, "libjpeg-turbo.lib")
#pragma comment(lib, "libpng.lib")
#pragma comment(lib, "libprotobuf.lib")
#pragma comment(lib, "libtiff.lib")
#pragma comment(lib, "libwebp.lib")
#pragma comment(lib, "opencv_img_hash430.lib")
#pragma comment(lib, "opencv_world430.lib")
#pragma comment(lib, "quirc.lib")
#pragma comment(lib, "zlib.lib")
#endif
#endif
#endif
· _DEBUG 项目在Debug配置模式下,系统定义的宏
· #pragma once 保证文件只编译一次
· #pragma comment(lib, " ") 链入依赖库
更多#pragma指令:#pragma comment的使用方法 pragma预处理指令详解-CSDN博客
最后在使用代码加上 #include "CVConfig.h" 即可
更多推荐



所有评论(0)