Ubuntu18.04——源码编译CUDA版本OpenCV-4.1.1
原创
©著作权归作者所有:来自51CTO博客作者IrvingGao的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
- 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
2.Cmake
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) 未定义
解决方法
- 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 gedit /etc/bash.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
- 需要注意的是: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’
解决方法
- 参考文章:Unsupported gpu architecture 'compute_11’解决方法
在编译选项中加入:
报错解决:对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引
解决方法
- 参考文章:对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引 在编译选项中加入: