显卡:NVIDIA GeForce GT 730(GK208B,Kepler架构,最高支持Cuda10.2)
CPU:Intel® Core™ i5-10500 CPU @ 3.10GHz × 12
系统:Ubuntu18.04.6 LTS
驱动:470.103.01
CUDA:10.2.89
ROS:Melodic
opencv-3.2.0下载地址:GitHub - opencv/opencv at 3.2.0Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.https://github.com/opencv/opencv/tree/3.2.0opencv_contrib-3.2.0下载地址:
GitHub - opencv/opencv_contrib at 3.2.0Repository for OpenCV's extra modules. Contribute to opencv/opencv_contrib development by creating an account on GitHub.https://github.com/opencv/opencv_contrib/tree/3.2.0
~/opencv-3.2.0/cmake/FindCUDA.cmake
1)找到
find_cuda_helper_libs(nppi)
替换为
find_cuda_helper_libs(nppial)
find_cuda_helper_libs(nppicc)
find_cuda_helper_libs(nppicom)
find_cuda_helper_libs(nppidei)
find_cuda_helper_libs(nppif)
find_cuda_helper_libs(nppig)
find_cuda_helper_libs(nppim)
find_cuda_helper_libs(nppist)
find_cuda_helper_libs(nppisu)
find_cuda_helper_libs(nppitc)
2)找到
set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")
替换为
set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")
3)找到
unset(CUDA_nppi_LIBRARY CACHE)
替换为
unset(CUDA_nppial_LIBRARY CACHE)
unset(CUDA_nppicc_LIBRARY CACHE)
unset(CUDA_nppicom_LIBRARY CACHE)
unset(CUDA_nppidei_LIBRARY CACHE)
unset(CUDA_nppif_LIBRARY CACHE)
unset(CUDA_nppig_LIBRARY CACHE)
unset(CUDA_nppim_LIBRARY CACHE)
unset(CUDA_nppist_LIBRARY CACHE)
unset(CUDA_nppisu_LIBRARY CACHE)
unset(CUDA_nppitc_LIBRARY CACHE)
~/opencv-3.2.0/cmake/OpenCVDetectCUDA.cmake
1)找到
set(__cuda_arch_ptx "")
if(CUDA_GENERATION STREQUAL "Fermi")
set(__cuda_arch_bin "2.0")
elseif(CUDA_GENERATION STREQUAL "Kepler")
set(__cuda_arch_bin "3.0 3.5 3.7")
替换为
set(__cuda_arch_ptx "")
if(CUDA_GENERATION STREQUAL "Kepler")
set(__cuda_arch_bin "3.0 3.5 3.7")
~/opencv3.2.0/modules/cudev/include/opencv2/cudev/common.hpp
1)添加
#include
cd ~/opencv-3.2.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_CUDA=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D WITH_CUBLAS=1 -D OPENCV_EXTRA_MODULES_PATH=/home/rust/Env/opencv_320/opencv_contrib-3.2.0/modules -D CUDA_GENERATION=Kepler -D OPENCV_ENABLE_NONFREE=True -D ENABLE_PRECOMPILED_HEADERS=OFF ..
make -j8
sudo make install
注:
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv320 此选项为设置opencv安装路径
-D OPENCV_EXTRA_MODULES_PATH=/home/rust/Env/opencv_320/opencv_contrib-3.2.0/modules 此选项为opencv_contrib-3.2.0中modules的文件夹路径
-D WITH_CUDA=ON 此选项为联合CUDA编译
博主自己编译的时候,是有科学上网环境的,所以没有遇到下载不了文件的情况,但是很多同学可能没有这样的环境,所以这里提供一个资源,供大家使用
链接: https://pan.baidu.com/s/1GKiWUDXgYwc9AGergzAs-w 密码: gbfc
下载好的文件需放到 ~/opencv_contrib-3.2.0/modules/xfeatures2d/src 目录下
并且注释掉 ~/opencv_contrib-3.2.0/modules/xfeatures2d/CMakeList.txt 中的最后两行,然后保存
接着重新cmake即可
进入 ~/opencv-3.2.0/samples/cpp/example_cmake/ 目录下,终端打开,依次输入:
cmake .
make
./opencv_example
如果电脑上插着USB摄像头,那么现在就会看到画面窗口
1)打开文件
sudo vim /etc/ld.so.conf.d/opencv.conf
2)输入以下内容并保存
/usr/local/opencv320/lib
3)更新文件
sudo ldconfig
4)打开文件
sudo vim /etc/bash.bashrc
5)末尾输入以下内容并保存
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv320/lib/pkgconfig
export PKG_CONFIG_PATH
6)执行更新
sudo updatedb
1)fatal error: LAPACKE_H_PATH-NOTFOUND/lapacke.h: No such file or directory
首先
sudo apt install liblapacke-dev checkinstall
然后找到 build 文件夹下的 opencv_lapack.h 头文件,将里面的
#include "LAPACKE_H_PATH-NOTFOUND/lapacke.h"
替换为
#include "lapacke.h"
1)首先备份 cv_birdgeconfig.cmake 文件
sudo cp /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake.bak
2)打开 cv_birdgeconfig.cmake 文件
sudo gedit /opt/ros/melodic/share/cv_bridge/cmake/cv_bridgeConfig.cmake
3)编辑 cv_birdgeconfig.cmake 文件中的三处地方
找到
if(NOT "include;/usr/include;/usr/include/opencv " STREQUAL " ")
替换为
if(NOT "include;/usr/local/opencv320/include/opencv2;/usr/local/opencv320/include/opencv " STREQUAL " ")
找到
set(_include_dirs "include;/usr/include;/usr/include/opencv")
替换为
set(_include_dirs "include;/usr/local/opencv320/include/opencv2;/usr/local/opencv320/include/opencv;/usr/local/opencv320/include;/usr/include")
找到
set(libraries "cv_bridge;/usr/lib/aarch64-linux-gnu/libopencv_core.so.3.2.0;/usr/lib/aarch64-linux-gnu/libopencv_imgproc.so.3.2.0;/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0")
替换为
set(libraries "cv_bridge;/usr/local/opencv320/lib/libopencv_core.so.3.2.0;/usr/local/opencv320/lib/libopencv_imgproc.so.3.2.0;/usr/local/opencv320/lib/libopencv_imgcodecs.so.3.2.0")
保存退出即可