windows下使用Opencv的两种方式

在windows下使用opencv有两种方式:

1、使用官网编译好的库,配置下环境变量和c++的库目录,包含目录include路径,链接器-输入里面填上opencv_worldxx.lib文件

2、使用cmake 按需编译所需要的库,例如使用一些第三方模块:wechat_qrcode,这个时候,就需要使用cmake编译opencv_contrib模块,以下详细的介绍两种使用方法:

第一种方法:

第一部分:下载 OpenCV

  1. 访问 OpenCV 官网的发布页面:
    https://opencv.org/releases/

  2. 选择适合的 Windows 版本点击下载。对于初学者,推荐下载最新的稳定版(例如 OpenCV 4.9.0)。你会下载到一个名为 opencv-4.9.0-windows.exe 的文件。

  3. 双击运行这个 .exe 文件。它实际上是一个自解压压缩包。选择一个你喜欢的路径进行解压,例如 D:\Opencv。这很重要,后续配置需要用到这个路径。

    • 建议路径不要有中文和空格,以免引起不必要的麻烦。
  4. 解压完成后,你的 OpenCV 目录结构应该类似这样:

    text

    Copy

    Download

    D:\Opencv
    └── build
        ├── include
        ├── x64
        │   └── vc16
        │       ├── bin
        │       ├── lib
        │       └── ...
        └── ...
    
    • build 目录包含我们开发所需的头文件和库文件。
    • include 目录是头文件所在位置。
    • x64 目录下根据编译器版本区分(vc16 = Visual Studio 2019, vc17 = Visual Studio 2022)。请根据你使用的 VS 版本选择对应的文件夹。

第二部分:配置系统环境变量

这一步的目的是让系统能够找到 OpenCV 的 .dll (动态链接库) 文件。

  1. 在 Windows 搜索框输入“环境变量”,选择 “编辑系统环境变量”

  2. 在弹出的窗口中,点击下方的 “环境变量(N)...” 按钮。

  3. 在“系统变量”区域中,找到并选中名为 Path 的变量,然后点击 “编辑”

  4. 点击 “新建”,然后添加你的 OpenCV 的 bin 目录路径。

    • 对于 VS 2022,路径通常是:D:\Opencv\build\x64\vc17\bin
    • 对于 VS 2019,路径通常是:D:\Opencv\build\x64\vc16\bin
  5. 点击 “确定” 保存所有更改。

  6. 重要:为了使环境变量生效,你需要重启任何正在运行的 Visual Studio 实例。最好重启一下电脑,确保万无一失。


第三部分:在 Visual Studio 中配置项目

现在我们来创建一个新的 Visual Studio 项目并配置它。请注意,这些配置是针对每个项目进行的,也就是说,你新建一个项目,就需要重新配置一次。

步骤 1:创建新项目

  1. 打开 Visual Studio,选择 “创建新项目”
  2. 选择 “控制台应用” 模板(C++),点击“下一步”。
  3. 为项目命名(例如 OpenCV_Test),选择位置,然后点击“创建”。

步骤 2:调整项目属性(关键步骤)

我们需要告诉 Visual Studio 去哪里找 OpenCV 的头文件(.hpp) 和库文件(.lib)

  1. 确保顶部解决方案平台是 x64。OpenCV 预编译库是 x64 的,Debug 和 Release 模式都需要是 x64。

    • 默认可能是 Win32,点击下拉菜单选择 x64。如果没有,选择“配置管理器”->“活动解决方案平台”->“新建”->选择“x64”。
  2. 在“解决方案资源管理器”中,右键点击你的项目名称,选择 “属性”

  3. 确保顶部的“配置”和“平台”是你想要设置的(例如 Debug 和 x64)。我们先配置 Debug 模式。

  4. 配置 VC++ 目录

    • 包含目录:点击“包含目录”,点击下拉箭头->“编辑”。

      • 添加你的 OpenCV 的 include 路径:
        D:\Opencv\build\include
        D:\Opencv\build\include\opencv2
      • (添加一个之后按回车再添加下一个)
    • 库目录:点击“库目录”,点击下拉箭头->“编辑”。

      • 添加你的 OpenCV 的 lib 路径:

        • 对于 VS 2022:D:\Opencv\build\x64\vc17\lib
        • 对于 VS 2019:D:\Opencv\build\x64\vc16\lib
  5. 配置 链接器 -> 输入 -> 附加依赖项

    • 在左侧列表中,找到“链接器”->“输入”。
    • 在右侧点击“附加依赖项”,点击下拉箭头->“编辑”。
    • 这里我们需要添加 .lib 文件的名字。你需要去之前库目录(...\lib)下查看具体的文件名。
    • 通常,对于 Debug 模式,你需要添加 opencv_world490d.lib(末尾的 d 代表 Debug)。
    • 对于 Release 模式,你需要添加 opencv_world490.lib(没有 d)。
    • 注意490 代表版本号 4.9.0,请根据你下载的实际版本进行修改。
  6. 重复配置:现在,在属性页顶部的“配置”下拉框中,选择 Release,然后重复第 4 步和第 5 步(库目录相同,但附加依赖项要改为不带 d 的 .lib 文件)。

  7. 点击“应用”和“确定”保存所有配置。


第四部分:测试代码

现在,让我们写一个简单的程序来测试配置是否成功。

在你的 main.cpp 文件中,粘贴以下代码。这段代码会读取一张图片并显示它

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

using namespace cv;
using namespace std;

int main()
{
    // 请确保在项目目录下有一名为 "test.jpg" 的图片
    // 或者使用绝对路径,例如:Mat img = imread("D:/images/test.jpg");
    Mat img = imread("test.jpg"); 

    if (img.empty())
    {
        cout << "Could not open or find the image!" << endl;
        return -1;
    }

    namedWindow("OpenCV Test", WINDOW_AUTOSIZE); // 创建一个窗口
    imshow("OpenCV Test", img); // 在窗口中显示图片

    waitKey(0); // 等待任意按键按下

    return 0;
}

第二种方法:

由于 Windows 下预编译的 OpenCV 通常不包含 opencv_contrib 模块,因此需要从源码编译。下面是一个清晰的步骤指南,希望能帮你顺利完成。

🧰 编译前的准备
首先,你需要准备好以下工具和源码:

  1. 安装 Visual Studio:确保已安装 Visual Studio 2019 或 2022,并选择使用 C++ 的桌面开发 工作负载。

  2. 安装 CMake:从 CMake 官网 下载并安装 Windows 版本的 CMake。安装时记得勾选 "Add CMake to the system PATH for all users" 选项。

  3. 下载 OpenCV 及 opencv_contrib 源码

    • OpenCV 源码:从 OpenCV GitHub Releases 下载 OpenCV 4.10.0 的源码 zip 包(例如 opencv-4.10.0.zip)。
    • opencv_contrib 源码:从 opencv_contrib GitHub Releases 下载与 OpenCV 版本匹配的 opencv_contrib 源码 zip 包(例如 opencv_contrib-4.10.0.zip)。
    • 将这两个 zip 包解压到你能找到的目录,例如 D:\opencv\opencv-4.10.0 和 D:\opencv\opencv_contrib-4.10.0务必确保两者的版本一致

📦 编译步骤
编译 OpenCV 主要可以通过 CMake GUI 进行配置,然后用 Visual Studio 编译。

1. 使用 CMake GUI 配置项目

  1. 打开 CMake GUI

  2. 设置源码路径和构建路径

    • 在 "Where is the source code:" 栏,选择你的 OpenCV 源码目录(例如 D:/opencv/opencv-4.10.0)。
    • 在 "Where to build the binaries:" 栏,创建一个新的空目录作为构建目录(例如 D:/opencv/opencv-4.10.0/build)。在源码目录外新建构建目录是推荐的做法。
  3. 首次 Configure

    • 点击 "Configure" 按钮。
    • 在弹出的对话框中,指定生成器(Generator)为你的 Visual Studio 版本和目标平台(例如 "Visual Studio 17 2022"),并选择 "Use default native compilers",平台可选 x64
    • 点击 "Finish"。CMake 会开始初始配置,这个过程可能会持续几分钟。
  4. 处理配置中的问题:首次配置后,可能会出现一些红色高亮的配置项。如果遇到网络问题导致某些文件(如 ippicvffmpegface_landmark_model.dat 等)下载失败910,可以尝试:

    • 手动下载:根据 build/CMakeDownloadLog.txt 日志中的 URL 手动下载这些文件。
    • 修改 CMake 脚本:将相应 .cmake 文件(如 opencv_contrib/modules/xfeatures2d/cmake/download_boostdesc.cmakeopencv_contrib/modules/xfeatures2d/cmake/download_vgg.cmakeopencv/3rdparty/ippicv/ippicv.cmake 等)中的下载 URL 替换为本地文件路径(例如 file:///D:/opencv/downloads/face_landmark_model.dat)9。
  5. 指定 opencv_contrib 模块并设置关键选项

    • 在 CMake GUI 的搜索框中搜索 OPENCV_EXTRA_MODULES_PATH,并将其值设置为你的 opencv_contrib 源码中的 modules 目录的路径(例如 D:/opencv/opencv_contrib-4.10.0/modules)125。

    • 根据需求调整其他选项(以下是一些常见的)如果需要使用java环境下的,那在cmake下搜索java,并把对钩取消掉,同理,将所有test的相关项也取消掉,加快编译速度:

      选项名 推荐设置 说明
      BUILD_opencv_world OFF (或 ON) 是否将所有模块打包成一个 opencv_world.lib 文件,方便管理,但文件较大。
      OPENCV_ENABLE_NONFREE ON 如果你想使用 SIFT、SURF 等专利算法,或者 wechat_qrcode,请务必开启。
      WITH_CUDA OFF (或 ON) 是否启用 CUDA 支持。如果你有 NVIDIA 显卡并需要 GPU 加速,可以开启。
      BUILD_EXAMPLES ON (或 OFF) 是否编译示例代码。
      BUILD_TESTS OFF 是否编译测试代码,通常可以关闭以加快编译速度。
      CMAKE_INSTALL_PREFIX 指定安装目录,例如 D:/opencv/opencv-4.10.0/install
    • 再次点击 "Configure"。可能需要多次点击 "Configure" 直到没有新的红色条目出现。

    • 点击 "Generate" 生成 Visual Studio 的解决方案文件(.sln)。成功后会出现 "Generating done"。

2. 使用 Visual Studio 编译和安装

  1. 打开解决方案文件:在 CMake 指定的构建目录(例如 D:/opencv/opencv-4.10.0/build)中找到 OpenCV.sln 文件,用 Visual Studio 打开。

  2. 选择编译配置:在 Visual Studio 顶部的工具栏中,将解决方案配置(Solution Configuration)切换到 Release 模式,平台选择 x64

  3. 编译

    • 在解决方案资源管理器(Solution Explorer)中,右键点击 ALL_BUILD 项目,选择 "生成" (Build)这个过程非常耗时(可能长达数小时),请耐心等待。
    • 编译成功后,再右键点击 INSTALL 项目,选择 "生成" (Build)。这会将编译好的文件复制到你在 CMAKE_INSTALL_PREFIX 中指定的安装目录。

3. 配置你的项目使用新编译的 OpenCV

编译安装完成后,你的安装目录(例如 D:/opencv/opencv-4.10.0/install)下会有 includelibbin 等文件夹。

  1. 环境变量:将安装目录下的 bin 文件夹(例如 D:\opencv\opencv-4.10.0\install\x64\vc17\bin)添加到系统的 Path 环境变量中,并重启电脑或至少重启 Visual Studio

  2. VS 项目配置:在你的项目属性中做如下设置8:

    • VC++ 目录 > 包含目录:添加 D:\opencv\opencv-4.10.0\install\include
    • VC++ 目录 > 库目录:添加 D:\opencv\opencv-4.10.0\install\x64\vc17\lib (注意 vc17 对应 VS2022, vc16 对应 VS2019)
    • 链接器 > 输入 > 附加依赖项:添加 opencv_world4100.lib (Release 模式) 或 opencv_world4100d.lib (Debug 模式)。如果你没有开启 BUILD_opencv_world,则需要添加所有你需要的模块对应的 .lib 文件(例如 opencv_core4100.libopencv_imgproc4100.libopencv_wechat_qrcode4100.lib 等)。

⚡ 注意事项

  • 版本匹配:务必确保 opencv 和 opencv_contrib 的版本号完全一致35。
  • 网络与下载:编译过程中下载第三方依赖是常见问题,手动干预是解决方案之一910。
  • 编译时间:编译 OpenCV 需要较长时间,且对电脑硬件有一定要求。
  • 磁盘空间:确保有足够的磁盘空间(至少 20-30GB 空闲空间)。
  • 权限问题:确保 CMake 和 Visual Studio 有必要的文件系统写入权限。
  • 文档参考:OpenCV 官方文档和 opencv_contrib 仓库的 README 是最好的参考14。
posted @ 2025-09-01 14:02  Tlink  阅读(43)  评论(0)    收藏  举报