简介
因为一些功能,这里选择安装的是 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 调试器按钮运行。
评论区