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,如下