opencv编译
请点我
问题1 CMakeLists.txt的写法
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}" ${CMAKE_MODULE_PATH})
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
project(Gaofa_Infer_Cpp)
# Threads
find_package(Threads)
# CUDA
find_package(CUDA REQUIRED)
include_directories(${CUDA_INCLUDE_DIRS})
message("CUDA_TOOLKIT_ROOT_DIR = ${CUDA_TOOLKIT_ROOT_DIR}")
message("CUDA_INCLUDE_DIRS = ${CUDA_INCLUDE_DIRS}")
message("CUDA_LIBRARIES = ${CUDA_LIBRARIES}")
find_package(CUDA REQUIRED)
message(STATUS "Find CUDA include at ${CUDA_INCLUDE_DIRS}")
message(STATUS "Find CUDA libraries: ${CUDA_LIBRARIES}")
# TensorRT
set(TENSORRT_ROOT TensorRT-7.2.2.3路径)
find_path(TENSORRT_INCLUDE_DIR NvInfer.h
HINTS ${TENSORRT_ROOT} PATH_SUFFIXES include/)
message(STATUS "Found TensorRT headers at ${TENSORRT_INCLUDE_DIR}")
find_library(TENSORRT_LIBRARY_INFER nvinfer
HINTS ${TENSORRT_ROOT} ${TENSORRT_BUILD} ${CUDA_TOOLKIT_ROOT_DIR}
PATH_SUFFIXES lib lib64 lib/x64)
find_library(TENSORRT_LIBRARY_ONNXPARSER nvonnxparser
HINTS ${TENSORRT_ROOT} ${TENSORRT_BUILD} ${CUDA_TOOLKIT_ROOT_DIR}
PATH_SUFFIXES lib lib64 lib/x64)
set(TENSORRT_LIBRARY ${TENSORRT_LIBRARY_INFER} ${TENSORRT_LIBRARY_ONNXPARSER})
message(STATUS "Find TensorRT libs: ${TENSORRT_LIBRARY}")
include_directories(${TENSORRT_ROOT}/include)
link_directories(${TENSORRT_ROOT}/lib)
# Boost
find_package(Boost REQUIRED COMPONENTS regex)
#find_package(Boost REQUIRED COMPONENTS)
if (NOT Boost_FOUND)
message("Not found Boost")
endif ()
include_directories(${Boost_INCLUDE_DIRS})
link_directories(/usr/lib/x86_64-linux-gnu)
message("boost include dirs: ${Boost_INCLUDE_DIRS}")
message("boost libs: ${Boost_LIBRARIES}")
# OpenCV
find_package(OpenCV REQUIRED)
message(STATUS "Find OpenCV include at ${OpenCV_INCLUDE_DIRS}")
message(STATUS "Find OpenCV libraries: ${OpenCV_LIBRARIES}")
set(lib_DIR /usr/lib/x84_64-linux-gnu)
link_directories(${lib_DIR})
find_package(Qt5Widgets)
# 设置内部添加库
set(COMMON_INCLUDE includes/common)
include_directories(${CUDA_INCLUDE_DIRS} ${TENSORRT_INCLUDE_DIR} ${OpenCV_INCLUDE_DIRS} ${COMMON_INCLUDE} ${JSON_INCLUDE})
link_libraries(nvinfer nvonnxparser ${CUDA_LIBRARIES})
add_executable(${PROJECT_NAME} main.cpp src/example.cpp)
# 添加链接库
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES} ${CUDA_LIBRARIES} ${TENSORRT_LIBRARY} ${Boost_LIBRARIES})
target_link_libraries(${PROJECT_NAME} libcudnn.so.8的路径)
target_link_libraries(${PROJECT_NAME} libjsoncpp.a)
问题2
By not providing “FindQt5Widgets.cmake” in CMAKE_MODULE_PATH this project has asked CMake to find
解决方案
sudo apt-get install qt5-default
问题3:tensorrt错误
错误1:[TRT] Assertion failed: cublasStatus == CUBLAS_STATUS_SUCCESS
解决方案:
错误2:(myelinVersionMismatch : Compiled against cuBLAS 10.2.3.0 but running against cuBLAS 10.2.2.0.
解决方案: