文章目录

  • ​​1.拉取源码 / 下载压缩包​​
  • ​​2.Cmake​​
  • ​​报错解决:`CUDA_nppicom_LIBRARY` \ `CUDA_CUDA_LIBRARY` (ADVANCED) 未定义​​
  • ​​解决方法​​
  • ​​3.Make​​
  • ​​4. 测试程序​​
  • ​​`CMakeLists.txt`模板​​
  • ​​OpenCV程序​​
  • ​​ROS-OpenCV程序​​
  • ​​其他报错汇总​​
  • ​​报错解决:Unsupported gpu architecture 'compute_30'​​
  • ​​解决方法​​
  • ​​报错解决:对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引​​
  • ​​解决方法​​

前提条件:可以自由S网。

参考文章:

  • ​​ubuntu1804编译opencv4.4 +cuda​​

1.拉取源码 / 下载压缩包

  • 源码方式:
git clone https://github.com/opencv/opencv.git
cd opencv && git checkout 4.1.1
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib && git checkout 4.1.1
cd ..
  • 压缩包方式:
链接:https://pan.baidu.com/s/1teLFkpuhb7yjiTtbRfTQ3A 
提取码:elkg

Ubuntu18.04——源码编译CUDA版本OpenCV-4.1.1_OpenCV

2.Cmake

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DOPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules \
-DBUILD_EXAMPLES=ON \
-DWITH_GSTREAMER=ON \
-DVIDEOIO_PLUGIN_LIST=gstreamer \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_python3=OFF \
-DWITH_EIGEN=ON \
-DWITH_OPENGL=ON \
-DCUDA_nppicom_LIBRARY=stdc++ \
-DCMAKE_LIBRARY_PATH=/usr/local/cuda/lib64/stubs \
-DCUDA_GENERATION=Auto \
-DWITH_CUDA=ON \
-DWITH_CUBLAS=ON \
-DWITH_CUDNN=ON ..
# 参数解析
# 如果要使用CUDA,务必加入该参数
# -DCUDA_nppicom_LIBRARY=stdc++ \
# 需要根据自己的GPU架构进行修改
# -D CUDA_GENERATION="Ampere" \

报错解决:​​CUDA_nppicom_LIBRARY​​​ \ ​​CUDA_CUDA_LIBRARY​​ (ADVANCED) 未定义

Ubuntu18.04——源码编译CUDA版本OpenCV-4.1.1_CUDA_02

解决方法

  • ​​Opencv-GPU 编译错误 CUDA_nppicom_LIBRARY (ADVANCED)​​

在编译参数中加入:

-DCUDA_nppicom_LIBRARY=stdc++ \
-DCMAKE_LIBRARY_PATH=/usr/local/cuda/lib64/stubs

3.Make

make -j12
sudo make install
cd /etc/ld.so.conf.d/
sudo touch opencv4.conf
sudo sh -c 'echo "/usr/local/lib" > opencv4.conf
sudo ldconfig
sudo gedit /etc/bash.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
  • 使用下面的命令可以查看opencv的版本:
opencv_version

Ubuntu18.04——源码编译CUDA版本OpenCV-4.1.1_OpenCV_03

  • 需要注意的是:OpenCV4在安装好后,所有的头文件一般都会生成在​​/usr/local/include/opencv4​​​路径下,而不是系统默认的头文件目录​​/usr/include/​​,因此需要进行软链接:
sudo ln -s /usr/local/include/opencv4 /usr/include/

软连接后即可在程序中直接使用等头文件:

#include <opencv2/opencv.hpp>

4. 测试程序

  • 参考:​​ubuntu 系统 OpenCV 4 安装教程​​

​CMakeLists.txt​​模板

OpenCV程序

cmake_minimum_required(VERSION 3.0.2)
project(XXXX)

# 0.set opencv dir(where you build)
set(OpenCV_DIR /home/innox/opencv/build)

# 1.find package
# OpenCV
find_package(OpenCV REQUIRED)

# 2.include directories
include_directories(
include

${OpenCV_INCLUDE_DIRS}
)

# 3.link opencv lib
add_executable(image_sub src/image_sub.cpp)
target_link_libraries(image_sub ${OpenCV_LIBS})

ROS-OpenCV程序

cmake_minimum_required(VERSION 3.0.2)
project(XXXX)

# 0.set opencv dir(where you build)
set(OpenCV_DIR /home/innox/opencv/build)

# 1.find package
# Catkin
find_package(catkin REQUIRED COMPONENTS
roscpp
rosmsg
rospy
message_filters # message_filters
cv_bridge # ros cv_bridge
OpenCV # ros cv
image_transport # ros cv
)
# Boost
find_package(Boost REQUIRED)
# OpenCV
find_package(OpenCV REQUIRED)

# 2.catkin package
catkin_package()

# 3.include directories
include_directories(
include

${catkin_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${OpenCV_INCLUDE_DIRS}
)

# 4.link opencv lib
add_executable(image_sub src/image_sub.cpp)
target_link_libraries(image_sub ${OpenCV_LIBS})

其他报错汇总

报错解决:Unsupported gpu architecture ‘compute_30’

Ubuntu18.04——源码编译CUDA版本OpenCV-4.1.1_解决方法_04

解决方法

  • 参考文章:​​Unsupported gpu architecture 'compute_11’解决方法​​

在编译选项中加入:

-DCUDA_GENERATION=Auto \

报错解决:对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引

Ubuntu18.04——源码编译CUDA版本OpenCV-4.1.1_CUDA_05

解决方法

  • 参考文章:​​对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引​​ 在编译选项中加入:
-DBUILD_TIFF=ON \