windows下使用Opencv的两种方式
在windows下使用opencv有两种方式:
1、使用官网编译好的库,配置下环境变量和c++的库目录,包含目录include路径,链接器-输入里面填上opencv_worldxx.lib文件
2、使用cmake 按需编译所需要的库,例如使用一些第三方模块:wechat_qrcode,这个时候,就需要使用cmake编译opencv_contrib模块,以下详细的介绍两种使用方法:
第一种方法:
第一部分:下载 OpenCV
-
访问 OpenCV 官网的发布页面:
https://opencv.org/releases/ -
选择适合的 Windows 版本点击下载。对于初学者,推荐下载最新的稳定版(例如
OpenCV 4.9.0)。你会下载到一个名为opencv-4.9.0-windows.exe的文件。 -
双击运行这个
.exe文件。它实际上是一个自解压压缩包。选择一个你喜欢的路径进行解压,例如D:\Opencv。这很重要,后续配置需要用到这个路径。- 建议路径不要有中文和空格,以免引起不必要的麻烦。
-
解压完成后,你的 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 (动态链接库) 文件。
-
在 Windows 搜索框输入“环境变量”,选择 “编辑系统环境变量”。
-
在弹出的窗口中,点击下方的 “环境变量(N)...” 按钮。
-
在“系统变量”区域中,找到并选中名为
Path的变量,然后点击 “编辑”。 -
点击 “新建”,然后添加你的 OpenCV 的
bin目录路径。- 对于 VS 2022,路径通常是:
D:\Opencv\build\x64\vc17\bin - 对于 VS 2019,路径通常是:
D:\Opencv\build\x64\vc16\bin
- 对于 VS 2022,路径通常是:
-
点击 “确定” 保存所有更改。
-
重要:为了使环境变量生效,你需要重启任何正在运行的 Visual Studio 实例。最好重启一下电脑,确保万无一失。
第三部分:在 Visual Studio 中配置项目
现在我们来创建一个新的 Visual Studio 项目并配置它。请注意,这些配置是针对每个项目进行的,也就是说,你新建一个项目,就需要重新配置一次。
步骤 1:创建新项目
- 打开 Visual Studio,选择 “创建新项目”。
- 选择 “控制台应用” 模板(C++),点击“下一步”。
- 为项目命名(例如
OpenCV_Test),选择位置,然后点击“创建”。
步骤 2:调整项目属性(关键步骤)
我们需要告诉 Visual Studio 去哪里找 OpenCV 的头文件(.hpp) 和库文件(.lib)。
-
确保顶部解决方案平台是
x64。OpenCV 预编译库是 x64 的,Debug 和 Release 模式都需要是 x64。- 默认可能是
Win32,点击下拉菜单选择x64。如果没有,选择“配置管理器”->“活动解决方案平台”->“新建”->选择“x64”。
- 默认可能是
-
在“解决方案资源管理器”中,右键点击你的项目名称,选择 “属性”。
-
确保顶部的“配置”和“平台”是你想要设置的(例如
Debug和x64)。我们先配置 Debug 模式。 -
配置 VC++ 目录:
-
包含目录:点击“包含目录”,点击下拉箭头->“编辑”。
- 添加你的 OpenCV 的
include路径:
D:\Opencv\build\include
D:\Opencv\build\include\opencv2 - (添加一个之后按回车再添加下一个)
- 添加你的 OpenCV 的
-
库目录:点击“库目录”,点击下拉箭头->“编辑”。
-
添加你的 OpenCV 的
lib路径:- 对于 VS 2022:
D:\Opencv\build\x64\vc17\lib - 对于 VS 2019:
D:\Opencv\build\x64\vc16\lib
- 对于 VS 2022:
-
-
-
配置 链接器 -> 输入 -> 附加依赖项:
- 在左侧列表中,找到“链接器”->“输入”。
- 在右侧点击“附加依赖项”,点击下拉箭头->“编辑”。
- 这里我们需要添加
.lib文件的名字。你需要去之前库目录(...\lib)下查看具体的文件名。 - 通常,对于 Debug 模式,你需要添加
opencv_world490d.lib(末尾的d代表 Debug)。 - 对于 Release 模式,你需要添加
opencv_world490.lib(没有d)。 - 注意:
490代表版本号 4.9.0,请根据你下载的实际版本进行修改。
-
重复配置:现在,在属性页顶部的“配置”下拉框中,选择
Release,然后重复第 4 步和第 5 步(库目录相同,但附加依赖项要改为不带d的.lib文件)。 -
点击“应用”和“确定”保存所有配置。
第四部分:测试代码
现在,让我们写一个简单的程序来测试配置是否成功。
在你的 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 模块,因此需要从源码编译。下面是一个清晰的步骤指南,希望能帮你顺利完成。
🧰 编译前的准备
首先,你需要准备好以下工具和源码:
-
安装 Visual Studio:确保已安装 Visual Studio 2019 或 2022,并选择使用 C++ 的桌面开发 工作负载。
-
安装 CMake:从 CMake 官网 下载并安装 Windows 版本的 CMake。安装时记得勾选 "Add CMake to the system PATH for all users" 选项。
-
下载 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 源码:从 OpenCV GitHub Releases 下载 OpenCV 4.10.0 的源码 zip 包(例如
📦 编译步骤
编译 OpenCV 主要可以通过 CMake GUI 进行配置,然后用 Visual Studio 编译。
1. 使用 CMake GUI 配置项目
-
打开 CMake GUI。
-
设置源码路径和构建路径:
- 在 "Where is the source code:" 栏,选择你的 OpenCV 源码目录(例如
D:/opencv/opencv-4.10.0)。 - 在 "Where to build the binaries:" 栏,创建一个新的空目录作为构建目录(例如
D:/opencv/opencv-4.10.0/build)。在源码目录外新建构建目录是推荐的做法。
- 在 "Where is the source code:" 栏,选择你的 OpenCV 源码目录(例如
-
首次 Configure:
- 点击 "Configure" 按钮。
- 在弹出的对话框中,指定生成器(Generator)为你的 Visual Studio 版本和目标平台(例如 "Visual Studio 17 2022"),并选择 "Use default native compilers",平台可选
x64。 - 点击 "Finish"。CMake 会开始初始配置,这个过程可能会持续几分钟。
-
处理配置中的问题:首次配置后,可能会出现一些红色高亮的配置项。如果遇到网络问题导致某些文件(如
ippicv、ffmpeg、face_landmark_model.dat等)下载失败910,可以尝试:- 手动下载:根据
build/CMakeDownloadLog.txt日志中的 URL 手动下载这些文件。 - 修改 CMake 脚本:将相应
.cmake文件(如opencv_contrib/modules/xfeatures2d/cmake/download_boostdesc.cmake,opencv_contrib/modules/xfeatures2d/cmake/download_vgg.cmake,opencv/3rdparty/ippicv/ippicv.cmake等)中的下载 URL 替换为本地文件路径(例如file:///D:/opencv/downloads/face_landmark_model.dat)9。
- 手动下载:根据
-
指定 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_worldOFF(或 ON)是否将所有模块打包成一个 opencv_world.lib文件,方便管理,但文件较大。OPENCV_ENABLE_NONFREEON如果你想使用 SIFT、SURF 等专利算法,或者 wechat_qrcode,请务必开启。 WITH_CUDAOFF(或 ON)是否启用 CUDA 支持。如果你有 NVIDIA 显卡并需要 GPU 加速,可以开启。 BUILD_EXAMPLESON(或 OFF)是否编译示例代码。 BUILD_TESTSOFF是否编译测试代码,通常可以关闭以加快编译速度。 CMAKE_INSTALL_PREFIX指定安装目录,例如 D:/opencv/opencv-4.10.0/install。 -
再次点击 "Configure"。可能需要多次点击 "Configure" 直到没有新的红色条目出现。
-
点击 "Generate" 生成 Visual Studio 的解决方案文件(
.sln)。成功后会出现 "Generating done"。
-
2. 使用 Visual Studio 编译和安装
-
打开解决方案文件:在 CMake 指定的构建目录(例如
D:/opencv/opencv-4.10.0/build)中找到OpenCV.sln文件,用 Visual Studio 打开。 -
选择编译配置:在 Visual Studio 顶部的工具栏中,将解决方案配置(Solution Configuration)切换到
Release模式,平台选择x64。 -
编译:
- 在解决方案资源管理器(Solution Explorer)中,右键点击
ALL_BUILD项目,选择 "生成" (Build)。这个过程非常耗时(可能长达数小时),请耐心等待。 - 编译成功后,再右键点击
INSTALL项目,选择 "生成" (Build)。这会将编译好的文件复制到你在CMAKE_INSTALL_PREFIX中指定的安装目录。
- 在解决方案资源管理器(Solution Explorer)中,右键点击
3. 配置你的项目使用新编译的 OpenCV
编译安装完成后,你的安装目录(例如 D:/opencv/opencv-4.10.0/install)下会有 include, lib, bin 等文件夹。
-
环境变量:将安装目录下的
bin文件夹(例如D:\opencv\opencv-4.10.0\install\x64\vc17\bin)添加到系统的 Path 环境变量中,并重启电脑或至少重启 Visual Studio。 -
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.lib,opencv_imgproc4100.lib,opencv_wechat_qrcode4100.lib等)。
- VC++ 目录 > 包含目录:添加
⚡ 注意事项
- 版本匹配:务必确保
opencv和opencv_contrib的版本号完全一致35。 - 网络与下载:编译过程中下载第三方依赖是常见问题,手动干预是解决方案之一910。
- 编译时间:编译 OpenCV 需要较长时间,且对电脑硬件有一定要求。
- 磁盘空间:确保有足够的磁盘空间(至少 20-30GB 空闲空间)。
- 权限问题:确保 CMake 和 Visual Studio 有必要的文件系统写入权限。
- 文档参考:OpenCV 官方文档和
opencv_contrib仓库的 README 是最好的参考14。

浙公网安备 33010602011771号