简介
因为一些功能,这里选择安装的是 OpenCV 3.x。
安装 Visual Studio 和 C++
通过更改 rel 参数 15、16、17,可以分别下载 2017、2019、2022:Thank You for Downloading Visual Studio Community Edition (microsoft.com)
下载 2017 即可。
安装选项仅需要选择一个“使用 C++ 的桌面开发”即可。

安装后将编译器目录D:\ProgramFiles\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64添加到环境变量。
安装配置 CUDA
Win + R 打开“运行”,输入devmgmt.msc打开设备管理器窗口,在显示适配器中查看 NVIDIA 显卡。

查看 NVIDIA 显卡计算能力和是否支持 CUDA:CUDA GPUs - Compute Capability | NVIDIA Developer
NVIDIA 驱动程序下载(可省略):官方驱动 | NVIDIA


此处只需要查看版本,不需要下载,然后根据版本去看支持的 CUDA 版本:CUDA Release Notes (nvidia.com)

如果已经安装了显卡驱动,也可以命令行运行nvidia-smi查看。

因为用的是 OpenCV 3.4.x,所以下载 CUDA Toolkit 11.x:CUDA Toolkit Archive | NVIDIA Developer

等待 VS 安装完成后打开 CUDA 安装程序,按提示安装。
结束后命令行输入nvcc -V查看是否安装成功。

CMake 编译 OpenCV
下载地址:Releases - OpenCV
我这里选择的是 3 的最后一个版本,解压后可以重命名为 opencv3。
下载安装 CMake:Download | CMake,并将其 bin 目录D:\ProgramFiles\CMake\bin添加到环境变量。
:::info
后文中mingw_build的命名是因为之前用 MinGW 编译过一次,可以改成任意名称。
:::
打开 CMake 如下配置:

CMake Configure 报错解决:
解决完一个就点一次 Configure 试试。
-
CMake Warning at cmake/OpenCVDownload.cmake:202
用 Proxifier 开启全局代理,或搜索其他代理方式或手动下载。
-
Found PythonInterp: D:/ProgramFiles/Python/Python311/python.exe (found suitable version "3.11.2", minimum required is "2.7")
安装了 Python 3 且找到了,但是需要 Python 2,安装并在 CMake 中 Add Entry,name 为
PYTHON2_EXECUTABLE,值为 Python 2 的安装目录D:\ProgramFiles\Python\Python27。
-
CONFIGURATION IS NOT SUPPORTED: validate setupvars script in install
取消勾选
OPENCV_GENERATE_SETUPVARS,作用为生成opencv_generated_setupvars.cmake文件,构建完成后配置运行时的环境变量。
勾选BUILD_opencv_world,勾选WITH_CUDA使用 CUDA。
设置CUDA_TOOLKIT_ROOT_DIR,值为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8。
还有其他选项参考如下:
- CUDA_ARCH_BIN:CUDA 算力大小,如果报红中有此项,就设置为具体的值。
- BUILD_CUDA_STUBS:允许在没有安装 CUDA 的系统上编译测试。
- ENABLE_FAST_MATH:启用更快地数学运算,但精度可能会略微丢失。
- OPENCV_ENABLE_NONFREE:启用依赖于第三方非开源代码的模块。
- OPENCV_EXTRA_MODULES_PATH:不在 OpenCV 核心库中的扩展功能,配置为 opencv/opencv_contrib: Repository for OpenCV's extra modules (github.com) 的解压目录/modules。
- OPENCV_DNN_CUDA:CUDA 是否已安装深度神经网络加速库 cuDNN。
- OPENCV_FORCE_PYTHON_LIBS:勾选会生成 cv2.pyd 文件到 Python 安装目录/Lib/site-packages 下。
- 搜索
java、python、js、test,用不到可以取消勾选。
等 Configure 不报错后,点击 Generate。
Visual Studio 安装 OpenCV
VS 打开项目/解决方案,选择 Cmake 中配置的编译目录下的OpenCV.sln。
右键CMakeTargets/ALL_BUILD,选择生成。

漫长的等待之后,右键CMakeTargets/INSTALL,选择仅用于项目 - 仅生成 INSTALL。

最后D:\ProgramFiles\opencv3\mingw-build\install目录就是编译后使用的目录。
C++ 代码测试
VS 新建项目,选择 Visual C++ 中的空项目或控制台应用。

项目右键属性。

配置改成所有配置,平台改成x64。
配置属性 - VC++ 目录 - 包含目录中新增编译的 install 目录的include、include/opencv、include/opencv2、C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include,引用目录中新增编译的 install 目录的x64/vc15/lib和C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64。


配置属性 - 链接器 - 输入中新增相对于引用目录下的opencv_world3416d.lib,也可以写绝对路径或通配符,比如opencv*.lib。

项目右键生成依赖项 - 生成自定义,勾选 CUDA。

新建一个 cpp 文件,并编写代码。


#include <iostream>
#include <cuda_runtime.h>
int main() {
int count;
cudaGetDeviceCount(&count);
if (count == 0) {
std::cout << "没有可用的CUDA设备" << std::endl;
}
else {
std::cout << "找到" << count << "个可用的CUDA设备" << std::endl;
for (int i = 0; i < count; ++i) {
cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, i);
std::cout << "设备 " << i << ": " << prop.name << std::endl;
}
}
return 0;
}
工具栏中平台改成 x64,点击本地 Windows 调试器按钮运行。


评论区