opencv4+ CUDA windows编译的小结(添加freetype ,cuda相关报错)
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路径,逐个填写了(按照能找到就指定的原则)
最终配置好的参数图

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是否开启就可以编译了



freetype-2.14.1 + harfbuzz相关资源(windows x64)
更多推荐



所有评论(0)