OpenCV 3.3+VS2017+Win10环境配置指南

来源:互联网 发布:c语言 乘法 溢出 编辑:程序博客网 时间:2024/05/16 16:20

OpenCV 3.3+VS2017+Win10环境配置指南

最近开始接触OpenCV,没想到安装和环境配置又踩了不少坑。一开始本着对官网的信任,按着官方tutorial里的步骤走,但是怎么样都设置不对,坑比啊。网上的博文,基本都是讲如何全局设置的,不够elegant,我不喜欢。最后终于博采众长,完成了环境配置,也有了这篇文章,希望对你有帮助。

下载安装 设置PATH

官网上的信息比较老,虽然坑,但也不是全错。起码下载、安装、设置PATH的部分还是正确的。

  1. 前往sourceforge页面,下载安装包。选择你需要的版本下载。
  2. 解压安装
  3. 设置环境变量

    • 设置一个环境变量OPENCV_DIR,之后如果OpenCV重装到了另一个位置,只要改这个OPENCV_DIR就可以了。

      打开命令行(管理员),运行命令setx -m OPENCV_DIR D:\OpenCV\Build\x64\vc14

    • 添加路径到PATH。

      在桌面的“此电脑”上右键,选择“属性”,在左边一栏中找到“高级系统设置”,名为“系统属性”的对话框中选择“高级”->最下面的“环境变量”。“环境变量”中,可以看到“系统变量”。找到名为“PATH”的变量,双击进入编辑界面,点“新建”,输入%OPENCV_DIR%\bin,之后一路保存退出。

VS2017设置

这个部分官网的教程似乎过时了(毕竟是为老版本写的tutorial),网上大多数教程都在教你如何进行全局设置(所有项目,包括没有用到OpenCV的项目配置都被修改了)。这里介绍我窃以为最优雅的方式:对单个项目进行设置。

  1. 新建一个Project

  2. 找到“属性管理器”(我的VS2017Pro在右边,和“解决方案管理器”在一起)。如果找不到,选择“视图”->最下面“属性管理器”

  3. 设置Debug属性

    在“属性管理器”中的Debug|x64中,新建一个property文件,不妨命名为OpenCV_Debug.props

    • C/C++->常规->附加包含目录$(OPENCV_DIR)\..\..\include

    • 链接器->常规->附加库目录 $(OPENCV_DIR)\lib

    • 链接器->输入->附加依赖项 opencv_world330d.lib;%(AdditionalDependencies)

      其中,330是版本号

    官网指南中,前两项是对的,最后一项不对。

  4. 设置Release属性

    将上一步生成的OpenCV_Debug.props拷贝,拷贝后的副本文件改名为OpenCV_Release.props

    • 在“属性管理器”的Release|x64中右键->“添加已有属性表”
    • 选择OpenCV_Release.props并添加
    • OpenCV_Release.props的设置中,将 链接器->输入->附加依赖项 的内容改为opencv_world330.lib;%(AdditionalDependencies) 比debug的配置要少一个“d”
  5. 保存,配置完成。今后,每当建立新的项目,只需拷贝此处生成的OpenCV_Debug.propsOpenCV_Release.props文件到新的项目中,再在新项目的“属性管理器”中添加这两个.props文件即可。

测试

测试OpenCV,官方教程的程序需要输入参数,不然会报错。我在网上随便找了个程序:

#include <iostream>  #include <opencv2/core.hpp>  #include <opencv2/highgui.hpp>  using namespace cv;int main(){    Mat img = imread("test.jpg");    namedWindow("sample");    imshow("sample", img);    waitKey(0);}

找一个图片文件,放在VS的项目文件夹下(和代码位于同一目录),将代码中的test.jpg改为你的图片名称。选择Debug-x64,运行本地Windows调试器,不出意外即可顺利运行。

如果你对官方的测试代码情有独钟,那需要设置一下命令参数:

  • 解决方案管理器->右键->属性->调试->命令参数,输入“图片文件名.拓展名”(不带引号)
  • 选择Debug-x64,打开本地Windows调试器

附官方的测试代码

#include <opencv2/core.hpp>#include <opencv2/imgcodecs.hpp>#include <opencv2/highgui.hpp>#include <iostream>using namespace cv;using namespace std;int main(int argc, char** argv){    if (argc != 2)    {        cout << " Usage: display_image ImageToLoadAndDisplay" << endl;        system("pause");        return -1;    }    Mat image;    image = imread(argv[1], IMREAD_COLOR); // Read the file    if (image.empty()) // Check for invalid input    {        cout << "Could not open or find the image" << std::endl;        system("pause");        return -1;    }    namedWindow("Display window", WINDOW_AUTOSIZE); // Create a window for display.    imshow("Display window", image); // Show our image inside it.    waitKey(0); // Wait for a keystroke in the window    return 0;}

版本信息

1.0 20171118 initial commit

知识共享许可协议
本作品采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议进行许可。

原创粉丝点击