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

34 篇文章 12 订阅
30 篇文章 18 订阅

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

参考文章:

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 

在这里插入图片描述

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) 未定义

在这里插入图片描述

解决方法

在编译参数中加入:

-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

在这里插入图片描述

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

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

#include <opencv2/opencv.hpp>

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’

在这里插入图片描述

解决方法

在编译选项中加入:

-DCUDA_GENERATION=Auto \

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

在这里插入图片描述

解决方法
-DBUILD_TIFF=ON \
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值