1、安装好cuda驱动
可参考CUDA 环境搭建_ima_zhan的博客-CSDN博客_cuda环境搭建
2、下载opencv 3.11 的源代码和lib
在官网的release页面可以找到各版本的下载
Releases - OpenCV
3、下载cmake 3.23.2,百度去官网下载即可
4、打开cmake,选择源文件为opencv3.11源代码,编译目录为新建的opencv311_build
点击Configure,在配置窗口中进行如下配置:
在WITH中选择WITH_CUDA,WITH_NVCUVID。
在BUILD中选中BUILD_opencv_world将文件编译为一个dll,确实方便引用了,但是文件有点大,我这个最后有200多兆。
Configure中遇到错误可以再次点击Configure试一下,其它错误可以参考5中的解决方法。
完成Configure后点击Generate生成工程,然后点击OpenProject打开工程。
5、编译时遇到的几个问题
1、先选择cuda,点击Configure按钮运行一遍后才能看到cuda的选项,在CUDA_ARCH_BIN中配置自己需要的版本确实可以提高后面在vs中的编译速度。其它一些加速方法,在别人的博客里查到一些很有用,直接引用了 win10 编译opencv4.5.0 (gpu版)_Mr.Q的博客-CSDN博客_win安装opencv
2、文件无法下载
ffmpegedll还有其他一些文件无法自动下载,可以下载后替换.cache文件,主要下载后的文件改为和.cache中一样的名称。下载连接可以在错误提示的文件中查看,在build文件夹的CMakeDownloadLog.txt中有所有几路。
3、编译时cuda选项是用自动选择的选择,若全部选中在vs中编译时会报错。我遇到的情况是这样的,详细原因还未查。
6、编译后的使用时遇到的错误
编译成功后建立了一个mfc工程来测试opencv_world3411d.dll的调用,遇到了几个错误
错误1:
将源文件中的include文件夹添加到
base.hpp中提示,下图错误
运行工程中的Install,会在 opencv311_build目录下生产install目录,其中有include文件夹中包含了需要引用的头文件。将此文件夹添加到C++的包含目录,具体操作如下:
错误2:编译提示“无法解析的外部符号 private:void _cdecl cv::String::deallocate(void)"
需要将install目录下的x64(因为我使用的是x64)目录下的vc16/lib下的opencv_world3411d.lib添加到工程OpenCvCamera的lib列表中,具体操作为
首先将install目录下的x64/vc16/lib目录添加到vc++的库目录,如下
然后在连接器的输入中添加opencv_world3411d.lib,如下