1. 配置CUDA相关的环境
(1)RTX 40系统的显卡
opencv4.6.0 + cuda11.8 + cudnn8(例如windows-x86_64-8.4.1.50_cuda11.x-archive) + tensorRT8
(2)RTX50系列显卡
opencv4.12.0 + cuda12.8 + cudnn9.8 + tensorRT10 (tensor9官方隐藏了下载地址)

2. 将cudnn目录下的 lib include bin 文件夹复制到 cuda目录(v11.8,v12.8)中
3. cmake-gui CUDA 重要的相关的设置(有些配置项看不见需要勾选 Advanced)
(1)WITH_CUDA ,WITH_CUDNN
(2)CUDA_TOOLKIT_ROOT_DIR + CUDA_INCLUDE_DIR
CUDA_TOOLKIT_ROOT_DIR项没有配置的情况下会报错(没有CUDA_TOOLKIT_ROOT_DIR配置项的话需要手工 Add entry)

ERROR:

     CMake Warning at cmake/OpenCVFindLibsPerf.cmake:45 (message):
     OpenCV is not able to find/configure CUDA SDK (required by WITH_CUDA).

    CUDA support will be disabled in OpenCV build.

(3)OPENCV_DNN_CUDA(在cuda + cudnn配置正确的后开启,否则会提示报错依赖冲突)

DNN: CUDA backend requires cuDNN. Please resolve dependency or disable OPENCV_DNN_CUDA=OFF

(4)CUDA_NVCC_EXECUTABLE(路径例如为:C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.8/bin/nvcc.exe
(5)其他cuda 模块的 lib路径,逐个填写了(按照能找到就指定的原则)
最终配置好的参数图
cuda相关配置图

4.添加freetype 模块的编译,在编译videopipe项目遇到的问题
设置好
OPENCV_ENABLE_NONFREE
WITH_FREETYPE
OPENCV_EXTRA_MODULES_PATH
修改 opencv_contrib-4.x\modules\freetype\CMakeLists.txt
将原文中内容改为

set(the_description "FreeType module. It enables to draw strings with outlines and mono-bitmaps/gray-bitmaps.")
if(APPLE_FRAMEWORK)
  ocv_module_disable(freetype)
endif()

#ocv_check_modules(FREETYPE freetype2)
#ocv_check_modules(HARFBUZZ harfbuzz)
if(WITH_FREETYPE)
  #find_package(freetype CONFIG REQUIRED)
  #find_package(harfbuzz CONFIG REQUIRED)

  set(FREETYPE_INCLUDE_DIR "D:/SDK/freetype-2.14.1/include" CACHE INTERNAL "")
  set(FREETYPE_INCLUDE_DIRS "${FREETYPE_INCLUDE_DIR}")
  include_directories("${FREETYPE_INCLUDE_DIR}")
  
  set(FREETYPE_LIBRARY "D:/SDK/freetype-2.14.1/lib/release/freetype.lib" CACHE INTERNAL "")
  set(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}")
  link_directories("${FREETYPE_LIBRARIES}")
  set(FREETYPE_FOUND TRUE)

  set(HARFBUZZ_INCLUDE_DIR "J:/git_clone/vcpkg/installed/x64-windows/include/harfbuzz" CACHE INTERNAL "")
  set(HARFBUZZ_INCLUDE_DIRS "${HARFBUZZ_INCLUDE_DIR}")
  set(HARFBUZZ_LIBRARY "J:/git_clone/vcpkg/installed/x64-windows/lib/harfbuzz.lib" CACHE INTERNAL "")
  set(HARFBUZZ_LIBRARIES "${HARFBUZZ_LIBRARY}")
 
  set(HARFBUZZ_FOUND TRUE)
endif()

if(OPENCV_INITIAL_PASS)
  if(NOT FREETYPE_FOUND)
    message(STATUS "freetype2:   NO")
  else()
    message(STATUS "freetype2:   YES (ver ${FREETYPE_VERSION})")
  endif()

  if(NOT HARFBUZZ_FOUND)
    message(STATUS "harfbuzz:    NO")
  else()
    message(STATUS "harfbuzz:    YES (ver ${HARFBUZZ_VERSION})")
  endif()
endif()

if(FREETYPE_FOUND AND HARFBUZZ_FOUND)
  ocv_define_module(freetype opencv_core opencv_imgproc WRAP python)
  ocv_target_link_libraries(${the_module} ${FREETYPE_LIBRARIES} ${HARFBUZZ_LIBRARIES})
  ocv_include_directories( ${FREETYPE_INCLUDE_DIRS} ${HARFBUZZ_INCLUDE_DIRS} )
else()
  ocv_module_disable(freetype)
endif()

freetype-2.14.1 需要编译项目Freetype2.14.1生成
harfbuzz.lib 我是使用 windows vcpkg 安装的
vcpkg的使用可以参考vcpkg安装和使用
也可以简单执行

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
bootstrap-vcpkg.bat

安装好vcpkg后直接调用命令

vcpkg install harfbuzz:x64-windows

在vcpkg 的默认安装目录下的installed/x64-windows就可以找到 include 和lib了

5.在CMake-gui的输出信息中确认好CUDA相关的是否正确,freetype是否开启就可以编译了

cuda版本
Freetype启用
CUDA CUDNN 开启

freetype-2.14.1 + harfbuzz相关资源(windows x64)

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐