最近需要用到C++ opencv,看了很多帖子都需要自己编译opencv源码。为避免源码编译,可以使用VS来配置opencv C++。下面是主要过程:
目录
1. 从官网下载 opencv - Get Started - OpenCV
2. 点击这个exe文件进行安装
3. 配置环境变量
4. VS中的项目配置
4.1 打开VS,创建一个console 项目
4.2 在属性管理器中右键 进行属性配置(如果看不到属性管理器,可以从 视图--> 其他窗口 --> 属性管理器,这样可以调出属性管理器)
4.3 头文件、库文件、链接器的配置
5. OK,运行自己一个小程序试试吧
1. 从官网下载 opencv - Get Started - OpenCV
现在opencv做的很友好了,可以选择不从源码编译的exe包
下载完成是这样的一个文件:
2. 点击这个exe文件进行安装
最后生成一个opencv文件夹。里面有两个子文件夹:Build 和 sources
其中Build就是编译好的文件夹。其中包含一些子目录:
重点关注3个目录:
- opencv / build / include
- opencv / build / x64 / vc16 /bin
- opencv / build / x64 / vc16 /lib
下面就是需要进行的配置。
3. 配置环境变量
在配置面板-》环境变量 在path中添加 opencv / build / x64 / vc16 /bin 目录
PS:为保险起见,我同时添加了用户的path 和 系统的path
4. VS中的项目配置
4.1 打开VS,创建一个console 项目
4.2 在属性管理器中右键 进行属性配置(如果看不到属性管理器,可以从 视图--> 其他窗口 --> 属性管理器,这样可以调出属性管理器)
4.3 头文件、库文件、链接器的配置
在 VC++项中,配置 包含的目录(即头文件目录)、和 库目录
- opencv / build / include
- opencv / build / x64 / vc16 /lib
在 链接器中 -> 输入 -> 附加依赖项 中 添加 lib文件夹下的opencv_world文件
注意:
在lib文件夹下有两个文件,其中.lib文件是release版本, ***d.lib文件时debug版本。
这两个不能同时添加,否则会出现版本冲突而导致 一些错误(个人踩了好长时间的坑,教训社科)比如
C:\Users\31408\AppData\Local\Temp\cc6IKGp6.o: In function `main':
D:/mydocs/git_src/test_opencv/main.cpp:34: undefined reference to `cv::imread(std::string const&, int)'
D:/mydocs/git_src/test_opencv/main.cpp:39: undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
D:/mydocs/git_src/test_opencv/main.cpp:40: undefined reference to `cv::waitKey(int)'
D:/mydocs/git_src/test_opencv/main.cpp:34: undefined reference to `cv::Mat::~Mat()'
D:/mydocs/git_src/test_opencv/main.cpp:34: undefined reference to `cv::Mat::~Mat()'
collect2.exe: error: ld returned 1 exit status
如果使用的是debug版本,添加debug库文件;如果是release版本,添加release库文件。具体是的debug 和 release , 是由VS上编译时选择的:
5. OK,运行自己一个小程序试试吧
/**Includes*********************************************************************/
#include <iostream>
#include <opencv2/opencv.hpp>
/**namespace********************************************************************/
using namespace cv;
using namespace std;
int main()
{
//载入图片
const string file = "D:\\mydocs\\done_docs\\1.png";
Mat img = imread(file);
if (img.empty())
{
fprintf(stderr, "Can not load image ");
return -1;
}
// 创建一个名为 "图像显示"窗口
namedWindow("pic");
// 在窗口中显示图像
imshow("pic", img);
// 等待1000 ms后窗口自动关闭
waitKey(0);
}
还可以加入断点进行debug