《 OpenCV 环境搭建》

发布于:2024-12-22 ⋅ 阅读:(8) ⋅ 点赞:(0)

一、OpenCV 简介

OpenCV(Open Source Computer Vision Library),即开源计算机视觉库,是计算机视觉领域的得力工具。它犹如一座宝藏,蕴含了丰富的图像处理和计算机视觉算法,能够在多个平台上稳定运行,包括广为人知的 Windows、Linux、macOS 等操作系统,为开发者提供了极大的便利和广阔的应用空间。
在实际应用中,OpenCV 的身影随处可见,其重要性不言而喻。于安防监控而言,它能对监控画面进行精准的目标检测与跟踪,无论是识别潜在的危险人物,还是追踪可疑物品的移动轨迹,都能高效完成,为安全防范工作提供有力支持;在智能交通领域,通过对车辆图像和视频的分析,实现车牌识别、车辆检测与交通流量统计等功能,有助于优化交通管理,提升道路通行效率;工业生产线上,它可以对产品进行细致的缺陷检测和尺寸测量,确保产品质量符合标准,助力工业自动化的发展;在医疗影像处理方面,辅助医生对 X 光片、CT 扫描等影像进行分析,例如检测病灶、测量器官尺寸等,提高诊断的准确性和效率,为患者的治疗提供更精准的依据。此外,在日常生活中,像智能手机的人脸识别解锁、图像后期处理软件中的各种特效应用等,也都离不开 OpenCV 的技术支持。其强大的功能和广泛的应用场景,使得掌握 OpenCV 成为众多开发者的必备技能,也让它在计算机视觉领域占据着举足轻重的地位,不断推动着相关技术的发展与创新,为人们的生活和各行业的进步带来诸多益处和变革。

二、准备工作

系统要求
OpenCV 的环境搭建对系统有一定要求,以下为你详细介绍:

  • 操作系统:它支持多种常见的操作系统,如 Windows、Linux、macOS 等。不同操作系统下的搭建步骤会稍有差异,本文主要聚焦于 Windows 系统下的搭建情况。
  • 处理器:支持多种处理器架构,包括 x86、x86_64、ARM 和 MIPS 等,像 Intel、AMD、ARM Cortex 等处理器都能运行 OpenCV。不过,若你要进行计算密集型的图像处理任务,较强的处理器能带来更好的性能表现。
  • 内存:其内存消耗取决于具体的应用和图像处理算法。一般来说,较大的内存容量可以提供更流畅的处理过程以及更强的处理能力,尤其是面对大规模图像处理任务时,足够的内存很关键。
  • 显卡:如果你使用 OpenCV 进行计算密集型的图像处理任务,例如图像滤波、图像识别和目标跟踪等,那么可以考虑使用支持 GPU 加速的显卡。OpenCV 提供了与 CUDA 和 OpenCL 等 GPU 计算框架的集成,能借助 GPU 的并行计算能力提高处理速度。

所需软件及下载安装
搭建 OpenCV 环境需要准备以下软件:

  • Visual Studio:它是常用的集成开发环境,不同版本基本都能用于 OpenCV 开发,例如 Visual Studio 2019、Visual Studio 2022 等。以 Visual Studio 2019 为例,你可以访问 Visual Studio 官方网站下载安装程序,双击启动安装向导,在安装向导中选择 “使用 C++ 的桌面开发” 工作负载后点击 “安装” 按钮开始下载并安装所选工作负载。安装完成后,启动 Visual Studio 2019,并完成如选择颜色主题、注册产品等初始设置。同时,还需要正确配置系统环境变量,在 Windows 搜索框中输入 “环境变量” 并选择 “编辑系统环境变量”,在系统属性窗口中点击 “环境变量” 按钮,在 “系统变量” 区域中找到名为 “Path” 的变量,选择它然后点击 “编辑”,点击 “新建”,添加 Visual Studio 的安装目录(通常是 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community ,其中 Community 是社区版,其他版本可能有所不同),同样地,添加 Visual Studio 的 VCTargets 路径(例如 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160 ),最后点击 “确定” 保存更改,并重启计算机以使更改生效。
  • OpenCV:可以到 OpenCV 的官网(http://opencv.org/)下载适合 Windows 系统的安装包,根据自身电脑是 32 位还是 64 位系统选择对应的版本进行下载。比如下载完成后得到.exe 格式的安装文件,双击运行进行解压安装,选择合适的安装目录即可。安装完毕之后,在其安装目录下能看到如 build 等重要文件夹,build 文件夹内包含了后续配置和使用 OpenCV 时要用到的一些库文件等内容。

另外,有些情况下还可能会用到 CMake(如果从源码编译 OpenCV 等情况时需要),同样可从其官方网站下载并运行安装程序进行安装。

三、安装 OpenCV

(一)获取安装包

首先,我们需要从 OpenCV 官网(http://opencv.org/)获取适合 Windows 系统的安装包。进入官网后,找到 “Releases” 板块,在这里可以看到不同版本的 OpenCV 发布信息。在选择版本时,要综合考虑自身需求以及与已安装软件的兼容性。一般来说,较新的版本会包含更多功能和优化,但也可能存在一些兼容性问题需要解决。比如,不同版本的 OpenCV 对 Visual Studio 的支持有所不同,存在着对应关系,像 vc14 对应的是 VS2015,vc15 对应的是 VS2017 等。所以要根据你电脑上安装的 Visual Studio 版本来选择合适的 OpenCV 版本,确保二者能够良好配合使用。
同时,要明确电脑是 32 位还是 64 位系统,选择对应的安装包进行下载。例如,如果你的电脑是 64 位系统且安装了 VS2019,那就可以选择适合 64 位系统且与 VS2019 兼容的较新版本的 OpenCV 安装包,如 OpenCV 4.x 系列等(具体以实际兼容性和需求为准)。下载完成后,通常会得到.exe 格式的安装文件,后续便可以进行安装操作了。

(二)安装过程

以下是以 Windows 系统为例的安装包解压和安装步骤

  1. 解压安装包

    • 找到下载好的.exe 格式的 OpenCV 安装文件,双击运行它,此时会弹出解压路径选择界面。要特别注意,安装路径最好选择英文路径,避免出现中文或特殊字符,防止后续使用过程中出现不必要的问题(例如路径识别错误等情况)。比如可以选择像 “D:\opencv” 这样的路径作为安装目录,然后点击 “Extract” 按钮开始解压,等待解压完成。
    • 解压完毕之后,在其安装目录下能看到如 “build” 等重要文件夹,“build” 文件夹内包含了后续配置和使用 OpenCV 时要用到的一些库文件等内容,所以这个文件夹在后续操作中会经常用到,要清楚其位置。
  2. 配置环境变量

    • 按下 “Win + E” 组合键打开资源管理器,右键点击 “此电脑”,选择 “属性”。
    • 在弹出的窗口中,点击 “高级系统设置”,接着在新窗口中点击 “环境变量” 按钮。
    • 在 “系统变量” 区域中找到名为 “Path” 的变量,选择它然后点击 “编辑”。
    • 点击 “新建”,添加 OpenCV 安装目录下的 “bin” 文件夹路径(例如如果你的 OpenCV 安装在 “D:\opencv”,那就添加 “D:\opencv\build\x64\vc15\bin”,这里的 “vc15” 要根据你下载的 OpenCV 版本对应的 Visual Studio 版本来定),添加完成后点击 “确定” 保存更改,这样系统就能找到 OpenCV 相关的动态库了。
  3. 在 Visual Studio 中配置 OpenCV(以新建控制台应用程序为例):

    • 打开 Visual Studio 软件,点击 “新建项目”,选择 “Win32 控制台应用程序”,输入项目名称后点击 “确定”,再点击 “完成” 创建项目。
    • 点击菜单栏中的 “项目” 然后选择 “属性”,进行如下配置:
      • 配置包含目录:依次选择 “VC++ 目录” - “包含目录” - “编辑”,添加以下三个路径(假设 OpenCV 安装在 “D:\opencv”):“D:\opencv\build\include”、D:\opencv\build\include\opencv”、“D:\opencv\build\include\opencv2”,添加完成后点击 “确定”。
      • 配置库目录:选择 “VC++ 目录” - “库目录” - “编辑”,将 “D:\opencv\build\x64\vc15\lib”(同样,“vc15” 依据实际情况调整)添加进去,点击 “确定”。
      • 配置附加依赖项:选择 “链接器” - “输入” - “附加依赖项” - “编辑”,根据是 Debug 还是 Release 模式添加相应的库文件名。例如在 Debug 模式下,如果是 OpenCV 4.x 版本,一般添加 “opencv_world4xxd.lib”(这里的 “xx” 代表具体版本号);在 Release 模式下添加 “opencv_world4xx.lib”。添加完成后点击 “确定” 保存设置。

完成以上步骤后,基本就完成了 OpenCV 在 Windows 系统下的安装和配置工作,可以编写代码测试一下环境是否搭建成功了,比如编写一个简单的读取并显示图片的代码来验证(代码示例可参考:#include <opencv2/opencv.hpp> #include using namespace std; using namespace cv; int main() { Mat src = imread(“D:\Desktop\123.png”); imshow(“显示一张图片”, src); waitKey(0); return 0; })。

四、配置环境变量

(一)系统环境变量配置

在 Windows 系统中,按下 “Win+R” 组合键,调出 “运行” 对话框,输入 “sysdm.cpl” 后回车,即可打开 “系统属性” 窗口。在 “系统属性” 窗口中,切换到 “高级” 选项卡,然后点击 “环境变量” 按钮。在 “系统变量” 区域中找到 “Path” 变量,选中它并点击 “编辑” 按钮。在弹出的编辑窗口中,点击 “新建”,将 OpenCV 安装目录下的 “bin” 文件夹路径添加进去(例如,如果 OpenCV 安装在 “D:\opencv”,则添加 “D:\opencv\build\x64\vc15\bin”,这里的 “vc15” 要根据你下载的penCV 版本对应的 Visual Studio 版本来定)。这一步的作用是让系统能够找到 OpenCV 的可执行文件和动态链接库,以便在运行使用 OpenCV 的程序时能够正确加载所需的库文件。
需要注意的是,如果你的系统是 32 位的,则需要选择 “x86” 文件夹下的相应路径进行添加,确保与系统架构匹配,否则可能会导致程序运行时找不到库文件或出现兼容性问题。添加完成后,依次点击 “确定” 按钮关闭各个窗口,保存环境变量的设置。

(二)项目环境变量配置(以 Visual Studio 为例)

  1. 创建新项目

    • 打开 Visual Studio 软件,点击 “文件” 菜单,选择 “新建”->“项目”。
    • 在弹出的 “新建项目” 对话框中,选择 “控制台应用程序”(当然,也可以根据实际需求选择其他合适的项目类型,如 Windows 桌面向导应用程序等),并确保选择 “C++” 作为编程语言。输入项目名称和保存位置后,点击 “确定” 按钮创建项目。
  2. 配置项目属性

    • 右键点击项目名称,在弹出的菜单中选择 “属性”,打开项目属性窗口。
    • 配置包含目录:在项目属性窗口中,展开 “VC++ 目录” 选项,点击 “包含目录”,然后点击右侧的 “编辑” 按钮。添加以下三个路径(假设 OpenCV 安装在 “D:\opencv”):“D:\opencv\build\include”、“D:\opencv\build\include\opencv”、D:\opencv\build\include\opencv2”。这些路径包含了 OpenCV 的头文件,添加后,项目在编译时就能找到所需的头文件,从而正确识别和使用 OpenCV 的函数和类。添加完成后点击 “确定”。
    • 配置库目录:同样在 “VC++ 目录” 下,点击 “库目录”,再点击 “编辑” 按钮,将
      “D:\opencv\build\x64\vc15\lib”(同样,“vc15” 依据实际情况调整)添加进去,点击
      “确定”。这一步是让项目知道在哪里找到 OpenCV 的库文件,这些库文件包含了 OpenCV 的实现代码,对于链接和生成可执行文件至关重要。
    • 配置附加依赖项:在项目属性窗口中,展开 “链接器” 选项,点击 “输入”,然后在 “附加依赖项” 处点击 “编辑” 按钮。根据是 Debug 还是 Release 模式添加相应的库文件名。例如在 Debug 模式下,如果是 OpenCV 4.x 版本,一般添加 “opencv_world4xxd.lib”(这里的 “xx” 代表具体版本号);在 Release 模式下添加 “opencv_world4xx.lib”。这些库文件是实际的代码库,在链接阶段会与项目的目标文件进行链接,生成最终的可执行文件。添加完成后点击 “确定” 保存设置。

完成以上配置后,点击 “确定” 关闭项目属性窗口,至此,在 Visual Studio 项目中完成了 OpenCV 的环境配置,可以开始编写使用 OpenCV 的代码了。例如,可以在项目的源文件中编写代码来读取和显示一张图片,以测试 OpenCV 环境是否配置成功:

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

using namespace std;
using namespace cv;

int main()
{
    Mat src = imread("D:\\Desktop\\123.png");
    if (src.empty())
    {
        cout << "无法读取图片!" << endl;
        return -1;
    }
    imshow("显示一张图片", src);
    waitKey(0);
    return 0;
}

在上述代码中,首先包含了 OpenCV 的头文件,然后使用imread函数读取一张图片,如果读取成功,则使用imshow函数显示图片,并通过waitKey函数等待用户按键操作,最后返回 0 表示程序正常结束。如果运行程序后能够成功显示指定的图片,说明 OpenCV 环境已经正确配置。

五、测试安装是否成功

(一)C++ 代码示例及运行测试

以下是一段使用 C++ 结合 OpenCV 读取和显示一张图片的简单代码示例:

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

using namespace std;
using namespace cv;

int main()
{
    Mat src = imread("D:\\Desktop\\123.png");
    if (src.empty())
    {
        cout << "无法读取图片!" << endl;
        return -1;
    }
    imshow("显示一张图片", src);
    waitKey(0);
    return 0;
}

在这段代码中:

  • 首先通过#include <opencv2/opencv.hpp>包含了 OpenCV 的头文件,这样才能使用 OpenCV 相关的函数和类等。using namespace std;和using namespace cv;声明了命名空间,方便后续代码书写。
  • Mat src = imread(“D:\Desktop\123.png”);这行代码使用imread函数尝试从指定路径(这里是D:\Desktop\123.png,你可以根据实际图片所在路径进行修改,注意路径中的斜杠要使用双斜杠转义)读取图片,并将读取到的图片数据存储在Mat类型的变量src中。之后通过if (src.empty())判断是否成功读取到图片,如果src为空,说明读取失败,会输出提示信息并返回错误码。
  • 若图片读取成功,则使用imshow(“显示一张图片”, src);函数将图片显示在名为 “显示一张图片”的窗口中,最后waitKey(0);会让程序暂停,等待用户按键操作,按任意键后程序继续执行并返回 0,表示正常结束。

运行这段代码来测试 OpenCV 环境是否搭建成功。编译运行代码后,如果能够正常弹出一个窗口显示出指定的图片,那么恭喜你,OpenCV 环境搭建成功了。

(二)可能出现的错误及解决方法

  • 找不到库文件问题
    • 现象:编译或者运行代码时,可能会提示类似 “无法加载 DLL‘xxxx.dll’:找不到指定的模块” 这样的错误信息。
    • 排查思路
      • 首先确认环境变量配置是否正确,检查系统环境变量中是否添加了 OpenCV 安装目录下的bin文件夹路径(例如如果 OpenCV 安装在D:\opencv,则应添加D:\opencv\build\x64\vc15\bin,这里的vc15要根据你下载的 OpenCV 版本对应的 Visual Studio 版本来定)。并且要注意如果是 32 位系统,要选择对应的x86文件夹下的路径添加,确保与系统架构匹配。
      • 可以借助工具进行排查,比如使用 Dependency Walker(可从http://www.dependencywalker.com/ 下载),通过它打开你的程序生成的可执行文件(.exe 文件)或者相关的 DLL 文件,查看依赖项,若有标记或者缺失的项就是电脑缺少的依赖,再用 Everything(可从 http://www.voidtools.com/ 下载)工具查看电脑是否真的缺少该项,对于缺少的系统库文件(例如常见的 MSVCP140D.DLL 等),可以到网上查找并下载放置到对应系统文件夹(System32 和 SysWOW64 等,注意区分 32 位和 64 位文件放置位置),同时检查环境变量配置是否正确引导程序找到这些文件。
  • 图片无法显示问题
    • 现象:运行代码后窗口没有正常显示图片,或者图片一闪而过等情况。
    • 排查思路
      • 检查图片路径是否正确,确保imread函数中传入的图片路径是准确存在的,建议优先使用绝对路径来避免相对路径带来的问题,可以尝试在资源管理器中直接复制图片的完整路径粘贴到代码中(注意斜杠转义)。
      • 查看代码中是否正确调用了waitKey函数,若没有waitKey函数或者参数设置不当,可能会导致图片无法正常显示或者一闪而过,像waitKey(0)表示无限等待用户按键,确保代码中有类似的设置来维持图片显示窗口。
      • 确认 OpenCV 安装是否正确,有可能在安装过程中出现了问题,比如库文件损坏等情况,可以尝试重新安装 OpenCV,并严格按照正确的安装步骤进行操作,确保各个环节配置准确无误。
      • 还要考虑图片本身是否存在问题,例如图片格式是否被 OpenCV 支持(常见的 jpg、png 等格式一般都支持,但一些特殊格式可能不行),可以尝试更换一张其他正常的图片来测试是否能够正常显示,如果其他图片可以正常显示,那么可能就是原图片本身有损坏等情况导致无法正确打开和显示。

总之,在测试过程中遇到问题不要慌张,按照上述的排查思路逐步分析,一般都能够解决环境搭建和使用中出现的常见问题,顺利使用 OpenCV 进行后续的开发工作。

六、常见问题解答

在 OpenCV 的安装和配置过程中,可能会遇到一些问题,以下是一些常见问题及其解决方案:

  • 问题:编译时出现 “无法打开包括文件: ‘opencv2/opencv.hpp’” 的错误。
    • 原因:项目的包含目录没有正确配置,导致编译器无法找到 OpenCV 的头文件。
    • 解决方案:检查项目属性中的 “VC++ 目录”->“包含目录”,确保已添加 OpenCV 安装目录下的 “include” 文件夹及其子文件夹(例如 “D:\opencv\build\include”、“D:\opencv\build\include\opencv”、“D:\opencv\build\include\opencv2”)。
  • 问题:链接时出现 “无法解析的外部符号” 错误,例如 “error LNK2019: 无法解析的外部符号 _cv::imread”。
    • 原因:项目的库目录或附加依赖项没有正确配置,导致链接器无法找到 OpenCV 的库文件。
    • 解决方案:首先检查项目属性中的 “VC++ 目录”->“库目录”,确认已添加 OpenCV 安装目录下的 “lib” 文件夹(例如 “D:\opencv\build\x64\vc15\lib”)。然后,检查 “链接器”->“输入”->“附加依赖项”,根据是 Debug 还是 Release 模式,确保已添加相应的库文件名(如 Debug 模式下的 “opencv_world4xxd.lib”,Release 模式下的 “opencv_world4xx.lib”,其中 “xx” 为具体版本号)。
  • 问题:运行时出现 “找不到指定的模块” 错误,提示缺少某个.dll 文件,如 “无法加载 DLL‘opencv_world4xx.dll’:找不到指定的模块”。
    • 原因:系统环境变量没有正确配置,或者缺少 OpenCV 的依赖项。
    • 解决方案:首先检查系统环境变量中的 “Path” 变量,确保已添加 OpenCV 安装目录下的 “bin” 文件夹路径(例如 “D:\opencv\build\x64\vc15\bin”)。如果问题仍然存在,可以使用 Dependency Walker 等工具检查程序的依赖项,确定缺少的.dll 文件,并将其所在路径添加到系统环境变量中。另外,也可以尝试重新安装 OpenCV,确保安装过程中没有出现错误。
  • 问题:在配置过程中,选择了错误的 Visual Studio 版本或 OpenCV 版本,导致兼容性问题。
    • 原因:不同版本的 OpenCV 对 Visual Studio 的支持有所不同,需要确保二者版本兼容。
    • 解决方案:仔细查阅 OpenCV 官方文档,确定所使用的 Visual Studio 版本与 OpenCV 版本的兼容性。如果版本不兼容,可以尝试更换为兼容的版本,或者参考相关的教程和论坛,了解如何解决特定版本组合下的兼容性问题。
  • 问题:在使用 CMake 进行编译时,出现 “CMake Error: The following variables are used in this project, but they are set to NOTFOUND” 等错误。
    • 原因:CMake 无法找到所需的依赖项或库文件,可能是因为环境变量配置不正确,或者依赖项没有正确安装。
    • 解决方案:检查系统环境变量,确保已正确设置相关的路径,如 OpenCV 的安装目录、CMake 的安装目录等。同时,确保已安装了所有必要的依赖项,例如在使用 CMake 编译 OpenCV 时,可能需要安装 Python、Numpy 等依赖库。可以参考 OpenCV 的官方文档和 CMake 的相关文档,了解具体的依赖项要求和解决方法。

总之,在遇到问题时,要仔细查看错误信息,分析可能的原因,并逐步排查。