【opencv源码解析0.1】opencv库VS环境配置

opencv环境配置

感谢大家学习这门教程。本系列文章首发于公众号【周旋机器视觉】。

这个这门课程的第一篇文章,主要是opencv环境配置。

本教程的环境为

  • Visual Studio 2019
  • CMake 3.22.3
  • opencv 4.6.0
  • windows 10

1、opencv的源码下载与安装

直接访问opencv官网:https://opencv.org/
在这里插入图片描述
点击release进入进入发布页面,选择4.6.0版本:

在这里插入图片描述

  • Docs:opencv-4.6.0官方文档
  • Sources:opencv源码
  • GitHub:官方github网址
  • Windows:Windows平台下的安装包
  • Release Notes:4.6.0版本发布说明

这几个按钮都非常明确,本教程我们需要用到的就是Docs、Windows这两项。

1.1 opencv官方文档

在这里插入图片描述

本课程主要看的就只有文档首页导航页的前两项,在我们课程开始会先带大家学习这两部分的官方文档部分。

1.2opencv环境搭建

在开始直接编译源码之前,我们先基于opencv的安装包来给VS配置opencv环境。点击上方页面中的windows,会直接进入下载页面下载一个exe

在这里插入图片描述

这exe其实就是一个解压缩执行程序,下载完成后直接执行,选择一个路径,则会将构建好的opencv以及源码解压缩到该目录:

在这里插入图片描述

其中sources就是opencv的源码,build就是官方给的构建好的opencv库。

我们可以自己手动构建opencv的源码,然后编译源码工程来生成opencv动态库和静态库,生成的产物就是build;也可以直接在我们项目中使用官方构建好的opencv库。在链接opencv库这个步骤上两个是没有差异的,无非就是一个官方给的dll,一个是自己手动编译的dll。

但我们自己手动构建opencv源码,可以方便的查看阅读opencv的源码工程,可以在不同文件、不同函数实现之间任意切换,编译生的debug版本的dll,还可以调试。

1)配置系统环境变量

在这里插入图片描述

进入高级系统设置->环境变量->用户变量(或系统变量)->添加opencv的库路径。

2)VS链接opencv库(手动配置法)

在这里插入图片描述

直接创建一个演示用的VS控制台应用程序。

在这里插入图片描述

要想链接opencv库,需要对项目的属性进行配置。进行配置的本质其实就是VS把一些可选项给你通过GUI的方式展示了出来,并赋予了默认值,你来修改一些选项来完成你自己项目工程的编译、链接、生成等过程的配置。所有的工作都由VS来帮你完成了。

而这些工作我们同样可以通过cmake来完成,后面我们会介绍如何使用cmake来管理你的项目并链接opencv库。

我们打开项目的属性进行如下配置:

在这里插入图片描述

配置库的include包含目录,路径见截图。这一步是将opencv的include路径配置进你项目的包含路径内,opencv的include文件夹内都是.hpp头文件。

完成这一步,你其实就可以在你的项目中使用

#include "opencv2/opencv.hpp"

来包含opencv的头文件,并编写opencv的代码了:

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

int main()
{
    cv::Mat srcImage = cv::imread("Laner.png");
    if (srcImage.empty())
    {
        std::cout << "image read Error!\n";
        return -1;
    }
    cv::imshow("src", srcImage);

    cv::waitKey();
    return 0;
}

这代表这你当前可以编译通过了,但是现在你并不能完成链接操作,执行该项目会报错,这些错误就是链接错误,无法链接到opencv库:

在这里插入图片描述

所以我们还需要链接opencv的静态库:

在这里插入图片描述

上图配置了lib静态库的路径。然后还需配置lib静态库名称,来告诉vs链接该路径下的哪个lib库,让我们先看一下该路径下都有什么:

在这里插入图片描述

可以看到一共只有两个lib库,其余的为cmake文件,后面我们使用cmake来管理项目并链接opencv库的时候会讲到。

两个lib库,以d结尾的为debug版本,没有d的opencv_world460.lib为release版本的静态库,因为我们前面截图的配置选项一直都是release x64,因此我们选择opencv_world460.lib库:

在这里插入图片描述

当你配置debug x64属性的时候,链接opencv_world460d.lib即可。

如果你按照我前面的步骤:

  1. 下载opencv库
  2. 配置库的系统路径
  3. 添加opencv库的include头文件包含路径
  4. 添加opencv静态链接库完成链接

那你运行你的程序应该是可以成功的。

不过在我电脑上却没有运行成功,如下图,因为我并没有配置库的系统路径。

在这里插入图片描述

这就可以凸显一个东西:opencv的动态链接库。

opencv为动态链接库,虽然我们通过头文件包含目录以及lib静态库完成了编译、链接的操作,但当我们程序运行时,程序还是通过动态库来调用opencv的,那我们配置系统环境变量,其实就是把opencv的bin目录,也就是opencv的动态库路径打入了环境变量:

在这里插入图片描述

当我们的程序运行时,它会在可执行文件目录同级目录内查找需要的动态库,如果没有找到,则去系统环境变量里的路径内查找动态库,如果还没有找到,就会报如上找不到opencv_world460.dll动态库的弹窗错误。

所以解决办法也很简单,有两种:

  1. 配置opencv的动态库系统环境变量
  2. 或者是将动态库拷贝到可执行文件的目录

在这里插入图片描述

我们采用方法2,将dll拷贝到exe路径。再次运行我们的测试程序:

在这里插入图片描述

运行成功。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值