Ubuntu搭建深度学习环境 Python-Cmake-Eigen-Libtorch-Torchvision-PCL-VTK-OpenCV

仅供本人记录查阅使用

安装Python

Python 下载地址
在这里插入图片描述
解压Python-3.8.19.tgz

sudo apt update
# 安装所需的依赖项,以便在 Ubuntu 中构建 Python
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
 #进入python文件夹
cd Python-3.8.19  
#解压
sudo tar -xzvf Python-3.8.19.tgz  
#指定python安装位置
./configure --enable-optimizations  prefix=/usr/local/python3.8.19   
#编译
make -j8
#安装
sudo make install 

添加到环境变量中

export PATH="/usr/local/python3.8.19/bin:$PATH"

  1. 方式一 python解释器添加到环境变量中

将/usr/local/python3.8.19/bin中的python复制到 /usr/local/bin 下

sudo cp /usr/local/python3.8.19/bin/python /usr/local/bin/python

注意:
1、因为系统默认就将/usr/local/bin 目录放到系统环境中了,所有执行python命令,是能找到的。
2、但是,并不是把/usr/local/bin放到最前面的,所以可能会被其他配置的目录先拦截到

  1. 方式二
PATH=/usr/local/python3.8.19/bin:$PATH 
#添加后,就重启虚拟机或服务器

注意:
1、这里是将/usr/local/python3.8.19/bin 目录添加到系统环境了,
2、因为修改的是配置文件,需要重启服务器或虚拟机的

# 检查Python版本
python3 --version

安装Cmake

Cmake下载地址

解压

tar -xvzf cmake-3.28.0-linux-x86_64.tar.gz

进入目录会看到只有 bin doc man share三个文件夹,没有 bootstrap文件,因为新版本的好像是已经编译好的,所以只要加入path里面就可以在命令行直接使用命令了

#打开个人path配置
gedit sudo tar -xvzf cmake-3.29.0-linux-x86_64.tar.gzsudo tar -xvzf cmake-3.29.0-linux-x86_64.tar.gz
#在末尾添加如下的内容
export PATH=/home/ubuntu/cmake-3.28.0-linux-x86_64/bin:$PATH
#接着在终端source一下.bashrc文件让path立即生效
source ~/.bashrc
#安装完毕测试版本
cmake --version
#打开gui界面:
cmake-gui

使用方法

新建CMakeLists.txt

cmake_minimum_required(VERSION 3.18.0)

project(demo_name)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "-pthread")

# skip 3rd-party lib dependencies
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--allow-shlib-undefined")

# install target and libraries
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/rknn_yolov5_demo_${CMAKE_SYSTEM_NAME})

set(CMAKE_SKIP_INSTALL_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
这段CMakeLists.txt文件包含以下关键部分的解释:
cmake_minimum_required(VERSION 3.18.0):
定义了项目至少需要CMake 3.18.0版本才能正确构建。这意味着你的CMake版本不应低于3.18.0。
project(demo_name):
创建了一个名为demo_name的CMake项目,这个名称将用于生成的目标和输出文件。
set(CMAKE_CXX_STANDARD 14):
设置C++标准为C++14,要求编译器支持C++14标准。
set(CMAKE_CXX_STANDARD_REQUIRED ON):
强制要求编译器必须支持C++14标准,不能降级到更低的标准。
set(CMAKE_CXX_FLAGS "-pthread"):
添加-pthread标志给C++编译器,启用多线程支持。
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--allow-shlib-undefined"):
添加链接器标志-Wl,--allow-shlib-undefined,允许链接时有未定义的共享库符号,这通常用于开发阶段,因为某些库可能还没有完全构建。
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/rknn_yolov5_demo_${CMAKE_SYSTEM_NAME}):
设置安装前缀为源代码目录下的install子目录,后面加上平台名称(例如,Linux、Windows等),这样构建的可执行文件和库将会被安装到这个自定义的位置。
set(CMAKE_SKIP_INSTALL_RPATH FALSE):
不跳过安装时的运行时库路径设置,这意味着CMake将在安装时包含RPATH信息。
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE):
在构建期间,使用安装时的RPATH,这样构建的可执行文件将包含指向安装位置的库的路径。
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib"):
设置RPATH为${CMAKE_INSTALL_PREFIX}/lib,这样可执行文件会在运行时查找该路径下的库。
总结来说,这段CMakeLists.txt配置了项目的基本构建信息,包括CMake版本要求、C++标准、编译和链接标志,以及安装时的路径和库搜索路径。这将指导CMake如何构建、链接和安装demo_name项目及其依赖。

安装 Eigen

Eigen是一个用于线性运算的C++ 模板库,支持 矩阵和矢量运算,数值分析及其相关的算法。

  1. 直接在apt软件包中安装
# 查看apt包中eigen的版本
apt show libeigen3-dev

sudo apt install libeigen3-dev

这种安装方式有一个缺点,因为apt包更新比较慢,安装的版本可能不是最新版,那么之后的一些依赖于eigen的库可能没有办法使用(如Sophus库要求必须选用3.3以上版本的eigen包)

  1. 手动编译安装
    在官网Eigen中下载最新版安装包源码,或者可以直接使用wget命令进行下载。之后提取压缩包,进入提取出来的文件夹,在终端中打开,然后进行编译。

建议GitLab
GitHub

mkdir build
cd build
cmake ..
sudo make install

最后检查是否安装成功,可以直接在编辑器中输入

#include
编译通过即安装成功。

安装libtorch

libtorch 是 PyTorch 的 C++ 前端库,用于在 C++ 环境中使用 PyTorch 的功能。 libtorch 提供了 C++ 接口,使开发人员可以在不同的 C++ 应用程序中集成 PyTorch 的功能,包括张量操作、神经网络构建、模型训练和推理等。通过 libtorch ,用户可以在 C++ 项目中利用 PyTorch 的强大功能,而无需依赖 Python 环境。

libtorch找适合版本下载
解压直接使用

安装torchvision

编译安装torchvision—C++API

需从GITHUB下载vision后编译生成
注意一点的是,所安装的torchvision必须要与你的LibTorch版本对应,在GitHub主页的tags中下载相应版本的torchvision
PyTorch中torch、torchvision、torchaudio、torchtext版本对应关系
在这里插入图片描述

编译步骤
第一步:下载源代码并解压 vision-0.15.1.tar.gz
第三步:在源代码的文件夹下开始编译

mkdir build && cd build       # 创建一个build文件夹并进入
mkdir torchvision             #创建一个torchvision文件夹并进入
cmake -DCMAKE_INSTALL_PREFIX=~/vision-v0.15.1/build/torchvision ..

说明:因为我要安装的是CPU版本的,想要装GPU版本的话还要在命令行紧跟在后面中加入 -DWITH_CUDA=ON 参数

如出现以下错误:

CMake Error at CMakeLists.txt:24 (find_package): By not providing
“FindTorch.cmake” in CMAKE_MODULE_PATH this project has asked CMake
to find a package configuration file provided by “Torch”, but CMake
did not find one.

Could not find a package configuration file provided by “Torch” with
any of the following names:

TorchConfig.cmake
torch-config.cmake

Add the installation prefix of “Torch” to CMAKE_PREFIX_PATH or set
“Torch_DIR” to a directory containing one of the above files. If
“Torch” provides a separate development package or SDK, be sure it
has been installed.

解决方案
添加Torch环境
export Torch_DIR as env variable before cmake

export Torch_DIR=/home/ubuntu/pytorch/libtorch/share/cmake/Torch 
##继续
cmake -DCMAKE_INSTALL_PREFIX=~/vision-v0.15.1/build/torchvision ..
sudo make -j8
sudo make install # 安装
make clean  # 删除编译产生的临时文件

安装PCL

GITHUB下载PCL
Point Cloud Library介绍
网站文档
PCL 中一些常用工具的快速参考
学习网站

安装PCL的依赖项

第一步:安装PCL的依赖项

# 必要依赖
sudo apt update
sudo apt install build-essential linux-libc-dev
sudo apt install mpi-default-dev openmpi-bin openmpi-common
sudo apt install libboost-all-dev libflann-dev libqhull-dev libeigen3-dev libusb-1.0-0-dev libudev-dev libxmu-dev libxi-dev libxmuu-dev libusb-dev

# 其他依赖
sudo apt install freeglut3-dev pkg-config
sudo apt install libxi-dev mono-complete libopenni-dev libopenni2-dev libqhull* libgtest-dev

# x11
sudo apt install libx11-dev libxext-dev libxtst-dev libxrender-dev 

# openGL
sudo apt install libgl1-mesa-dev libglu1-mesa-dev

# cmake
sudo apt install cmake  

# git
sudo apt install git 

PCL多版本共存问题

#查看版本
gedit /usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfigVersion.cmake

编译另一个版本PCL注意:编译安装地址不是默认的/usr/local,而是自行指定的文件夹这样不会产生任何冲突
使用时,在工程的CMakeLists.txt中需要指定使用哪个版本的PCL(最好选择默认路径)
如下方式:
解决:修改CMakeLists.txt

编译PCL库

下载源代码并解压 pcl-pcl-1.14.0.tar.gz

tar -xzvf pcl-pcl-1.14.0.tar.gz
mkdir build && cd build       # 创建一个build文件夹并进入
mkdir installed               #创建一个installed文件夹
cmake \
-D CMAKE_BUILD_TYPE=Release \
-D BUILD_GPU=ON \
-D BUILD_apps=ON \
-D BUILD_examples=ON \
-D CMAKE_INSTALL_PREFIX=~/pcl-pcl-1.14.0/build/installed ..
sudo make -j8
sudo make install # 安装
make clean  # 删除编译产生的临时文件

程序验证

创建pcl_test文件夹 和 pcl.cpp

创建pcl_test文件夹 和 pcl.cpp
mkdir pcl_test && cd pcl_test
gedit pcl.cpp
#include <iostream>
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/console/parse.h>
using namespace std;
 
int main(int argc, char **argv) {//柱型点云测试
  cout << "Test PCL !" << endl;
  pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
  uint8_t r(255), g(15), b(15);
  for (float z(-1.0); z <= 1.0; z += 0.05) {//制作柱型点云集
  	for (float angle(0.0); angle <= 360.0; angle += 5.0) {
      pcl::PointXYZRGB point;
      point.x = cos (pcl::deg2rad(angle));
      point.y = sin (pcl::deg2rad(angle));
      point.z = z;
      uint32_t rgb = (static_cast<uint32_t>(r) << 16 | static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));
      point.rgb = *reinterpret_cast<float*>(&rgb);
      point_cloud_ptr->points.push_back (point);
    }
    if (z < 0.0) {//颜色渐变
      r -= 12;
      g += 12;
    }
    else {
      g -= 12;
      b += 12;
    }
  }
  
  point_cloud_ptr->width = (int) point_cloud_ptr->points.size ();
  point_cloud_ptr->height = 1;
 
  pcl::visualization::CloudViewer viewer ("pcl—test测试");

  viewer.showCloud(point_cloud_ptr); 
  while (!viewer.wasStopped()){ };
  return 0;
}
创建CMakeLists.txt
gedit CMakeLists.txt
cmake_minimum_required(VERSION 2.6)
project(pcl_test)
#解释
#1)如果是需要某一个PCL的某一个组件: find_package(PCL 1.12 REQUIRED COMPONENTS io)
#2)如果是几个组件:find_package(PCL 1.12 REQUIRED COMPONENTS io common)
#3)如果需要整个安装包:find_package(PCL 1.12 REQUIRED)
set(PCL_DIR "/home/ubuntu/pcl-pcl-1.12.0/build")
find_package(PCL 1.12.0 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
 
#接下来这需要从pcl.cpp文件生成一个名为pcl的可执行文件。
add_executable(pcl pcl.cpp)
#在生成对应的exe文件之后,需要调用PCL相关函数,因此需要添加相应链接库:
target_link_libraries (pcl ${PCL_LIBRARIES})
install(TARGETS pcl RUNTIME DESTINATION bin)

当PCL安装包找到之后,就需要添加对应的包含目录和依赖库了。我们需要设置几个相关的变量:

PCL_FOUND: set to 1 if PCL is found, otherwise unset
PCL_INCLUDE_DIRS: set to the paths to PCL installed headers and the dependency headers
PCL_LIBRARIES: set to the file names of the built and installed PCL libraries
PCL_LIBRARY_DIRS: set to the paths to where PCL libraries and 3rd party dependencies reside
PCL_VERSION: the version of the found PCL
PCL_COMPONENTS: lists all available components
PCL_DEFINITIONS: lists the needed preprocessor definitions and compiler flags

编译

cmake .
make

运行

./pcl

在这里插入图片描述

安装VTK

下载VTK
OpenCV编译的时候需要指定VTK的版本,因此首先需要编译VTK

编译VTK库
编译另一个版本VTK注意:编译安装地址不是默认的/usr/local,而是自行指定的文件夹这样不会产生任何冲突
使用时,在工程的CMakeLists.txt中需要指定使用哪个版本的VTK (最好选择默认路径)
如下方式:
解决:修改CMakeLists.txt

编译步骤:
第一步:下载源代码并解压 VTK-9.3.0.tar.gz

tar -xzvf VTK-9.3.0.tar.gz

第二步:在源代码的文件夹 VTK-9.3.0下开始编译

cd VTK-9.3.0
mkdir build && cd build
# mkdir installed
# 配置 VTK 的构建选项,将 VTK 构建为共享库,启用渲染和独立应用程序支持,但禁用 Qt 和 Tk 支持,可根据需要调整选项
# BUILD_SHARED_LIBS = ON   
# BUILD_TESTING = ON    # 默认OFF,如果打开的话,编译时会由于下载测试数据所用url过旧而报错,建议OFF
# CMAKE_BUILD_TYPE = Release    # 默认Debug运行会较慢
# CMAKE_INSTALL_PREFIX = /usr/local    # 这里用默认就行,或者改到想要安装的位置
# 以下为高级设置,需先在命令行按't'才可见
# VTK_FORBID_DOWNLOADS = ON    # 默认OFF,建议打开,否则编译会报错,理由同BUILD_TESTING
# 此时应已经出现'g' generating 的按键选项,按 'g' 即完成配置.
cmake \
-D BUILD_SHARED_LIBS=ON \
-D BUILD_TESTING=OFF \
-D CMAKE_BUILD_TYPE=Release ..
#cmake -DCMAKE_INSTALL_PREFIX=~/VTK-9.3.0/build/installed ..
sudo make -j8
sudo make install

第三步:把编译出来的installed文件夹移出到主目录使用(自行安排)


安装OpenCV

OpenCV包
编译另一个版本注意:编译安装地址不是默认的/usr/local,而是自行指定的文件夹,这样不会产生任何冲突 (最好选择默认路径)

安装opencv依赖的库

sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev

安装一些可选的库

# python3支持(首次安装了python的库,但make报错了,之后删了这两个库,若不使用python,建议不安装)
sudo apt install python3-dev python3-numpy
# streamer支持
sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
# 可选的依赖
sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev

编译OpenCV库

下载源代码并解压 opencv-4.9.0.tar.gz

tar -xzvf opencv-4.9.0.tar.gz

在源代码的文件夹 opencv-4.9.0下开始编译

mkdir build && cd build       # 创建一个build文件夹并进入
# mkdir installed

使用cmake配置opencv:

cmake \
-D WITH_TBB=ON \
-D WITH_EIGEN=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON  \
-D BUILD_DOCS=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
-D WITH_OPENCL=OFF \
-D WITH_CUDA=OFF \
-D BUILD_opencv_gpu=OFF \
-D BUILD_opencv_gpuarithm=OFF \
-D BUILD_opencv_gpubgsegm=O \
-D CMAKE_BUILD_TYPE=RELEASE \
-D OPENCV_GENERATE_PKGCONFIG=YES \
-D CMAKE_INSTALL_PREFIX=/usr/local ..

#-D CMAKE_INSTALL_PREFIX=/home/ubuntu20/opencv-4.9.0/build/installed ..
# 安装vtk需要加入
#-D WITH_VTK=ON \
#-D VTK_DIR= /usr/local/lib/cmake/vtk-9.3 \
# 编译选项解释:
# DCMAKE_BUILD_TYPE=Release 发布模式,优化程度最高,性能最佳,但是编译比 Debug 慢
# DCMAKE_INSTALL_PREFIX     编译后安装的地址,可自行修改
# 其他值得注意的编译选项:
# DBUILD_CUDA               编译CUDA功能,需要NVIDIA显卡和驱动支持
# DBUILD_GPU                编译GPU功能
# VTK_DIR                VTK的安装目录,如果是自行安装的VTK需要定位到“VTK安装目录/usr/local/lib/cmake/vtk-9.3”
sudo make -j8
sudo make install # 安装
make clean  # 删除编译产生的临时文件

编译版本环境配置(默认环境不需要此步骤):

#打开~/.bashrc
gedit ~/.bashrc
#在文件末尾增加以下内容
export PKG_CONFIG_PATH=/home/wlj/opencv-4.9.0/build/installed/lib/pkgconfig
export LD_LIBRARY_PATH=/home/wlj/opencv-4.9.0/build/installed/lib
#更新~/.bashrc
source ~/.bashrc 

#查询版本
pkg-config
pkg-config --modversion opencv4

程序验证

创建opencv_test文件夹 和 cv.cpp
mkdir opencv_test && cd opencv_test
gedit cv.cpp
添加一张图片image.jpg
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;

int main(int argc, char* argv[]) {
    const char* imagename = "image.jpg";//此处为的图片路径
    //从文件中读入图像
    cv::Mat img = cv::imread(imagename, 1);
    //如果读入图像失败
    if (img.empty()) {
        fprintf(stderr, "Can not load image %s\n", imagename);
        return -1;
    }
    cv::imshow("image", img); //显示图像
    cv::waitKey();
    return 0;
}
创建CMakeLists.txt
gedit CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(opencv_test)
set(OpenCV_DIR "/home/wlj/opencv-4.9.0/build")
find_package(OpenCV 4.9.0 REQUIRED)
add_executable(cv cv.cpp)
target_link_libraries(cv ${OpenCV_LIBRARIES})

编译

cmake .
make

运行

./cv

设置环境变量(可选非必要)

.bashrc

export Torch_DIR=/home/ubuntu/pytorch/libtorch/share/cmake/Torch 
export Vision_DIR=/home/ubuntu/pytorch/torchvision/share/cmake/TorchVision
export PCL_DIR=/usr/local/include
export VTK_DIR=/usr/local/include

export PKG_CONFIG_PATH=/home/ubuntu/opencv-4.9.0/build/installed/lib/pkgconfig
export LD_LIBRARY_PATH=/home/ubuntu/opencv-4.9.0/build/installed/lib

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有余地 EliasJie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值