Ubuntu搭建环境Cmake-Libtorch-Torchvision-PCL-VTK-OpenCV
- 安装Cmake
- 安装libtorch
- 安装torchvision
- 安装PCL
- 安装PCL的依赖项
- PCL多版本共存问题
- 编译PCL库
- 程序验证
- 创建CMakeLists.txt
- 安装VTK
- 安装OpenCV
- 编译OpenCV库
- 编译版本环境配置:
- 程序验证
- 创建opencv_test文件夹 和 cv.cpp
- 创建CMakeLists.txt
- 编译
- 运行
- 设置环境变量
仅供本人记录查阅使用
安装Cmake
Cmake下载地址
解压
进入目录会看到只有 bin doc man share三个文件夹,没有 bootstrap文件,因为新版本的好像是已经编译好的,所以只要加入path里面就可以在命令行直接使用命令了
#打开个人path配置
gedit ~/.bashrc
#在末尾添加如下的内容
export PATH=/home/ubuntu/cmake-3.28.0-linux-x86_64/bin:$PATH
#接着在终端source一下.bashrc文件让path立即生效
source ~/.bashrc
#安装完毕测试版本
cmake --version
#打开gui界面:
cmake-gui
安装libtorch
libtorch 是 PyTorch 的 C++ 前端库,用于在 C++ 环境中使用 PyTorch 的功能。 libtorch 提供了 C++ 接口,使开发人员可以在不同的 C++ 应用程序中集成 PyTorch 的功能,包括张量操作、神经网络构建、模型训练和推理等。通过 libtorch ,用户可以在 C++ 项目中利用 PyTorch 的强大功能,而无需依赖 Python 环境。
libtorch下载
解压直接使用
安装torchvision
需从GITHUB下载vision后编译生成
下载地址vision版本为最新
下载对应版本的pytorch和torchvision的.whl文件
whl文件
1.1 编译步骤
第一步:下载源代码并解压 vision-0.17.1.tar.gz
第三步:在源代码的文件夹下开始编译
mkdir build && cd build # 创建一个build文件夹并进入
mkdir torchvision #创建一个torchvision文件夹并进入
cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=~/vision-0.17.1/build/torchvision ..
如出现以下错误:
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_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=~/vision-0.17.1/build/torchvision ..
make -j8
sudo make install # 安装
make clean # 删除编译产生的临时文件
安装PCL
GITHUB下载PCL
Point Cloud Library介绍
网站文档
学习网站https://www.yuque.com/huangzhongqing/pcl
安装PCL的依赖项
第一步:安装PCL的依赖项
# 必要依赖
sudo apt update
sudo apt install git build-essential linux-libc-dev
sudo apt install cmake
sudo apt install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt install mpi-default-dev openmpi-bin openmpi-common
sudo apt install libflann1.8 libflann-dev
sudo apt install libeigen3-dev
sudo apt install libboost-all-dev# 其他依赖
sudo apt install libqhull* libgtest-dev
sudo apt install freeglut3-dev pkg-config
sudo apt install libxmu-dev libxi-dev
sudo apt install mono-complete
sudo apt install libopenni-dev
sudo apt install libopenni2-dev # x11
sudo apt install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev# openGL
sudo apt install build-essential libgl1-mesa-dev libglu1-mesa-dev# cmake
sudo apt install cmake
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
mkdir build && cd build # 创建一个build文件夹并进入
mkdir installed #创建一个installed文件夹
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/pcl-pcl-1.14.0/build/installed ..
# 编译选项解释:
# CMAKE_BUILD_TYPE=None 别的教程上都有这一个
# CMAKE_INSTALL_PREFIX 编译后安装的地址,可自行修改
# 其他值得注意的编译选项:
# BUILD_CUDA 编译CUDA功能,需要NVIDIA显卡和驱动支持
# BUILD_GPU 编译GPU功能
# VTK_DIR VTK的安装目录,如果是自行安装的VTK需要定位到“VTK安装目录/lib/cmake/vtk-8.2”sudo make -j8
sudo make install # 安装
make clean # 删除编译产生的临时文件
程序验证
创建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(pcltest)
#解释
#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})#接下来这需要从test1.cpp文件生成一个名为pcltest的可执行文件。
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
安装VTK
下载vtk
编译VTK库
编译步骤:
第一步:下载源代码并解压 VTK-9.3.0.tar.gz
第二步:在源代码的文件夹 VTK-9.3.0下开始编译
cd VTK-9.2.0
mkdir build && cd build
#配置 VTK 的构建选项,将 VTK 构建为共享库,启用渲染和独立应用程序支持,但禁用 Qt 和 Tk 支持,可根据需要调整选项
cmake -DCMAKE_INSTALL_PREFIX=~/VTK-9.3.0/build/VTK9.3.0 ..
make -j8
sudo make install
第三步:把编译出来的文件目录移出到主目录使用(自行安排)
安装OpenCV
OpenCV包
编译另一个版本注意:编译安装地址不是默认的/usr/local,而是自行指定的文件夹,这样不会产生任何冲突
编译OpenCV库
下载源代码并解压 opencv-4.9.0.tar.gz
在源代码的文件夹 opencv-4.9.0下开始编译
mkdir build && cd build # 创建一个build文件夹并进入
mkdir installed
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 CMAKE_INSTALL_PREFIX=~/opencv-4.9.0/build/installed ..
# 编译选项解释:
# CMAKE_BUILD_TYPE=None 别的教程上都有这一个
# CMAKE_INSTALL_PREFIX 编译后安装的地址,可自行修改
# 其他值得注意的编译选项:
# BUILD_CUDA 编译CUDA功能,需要NVIDIA显卡和驱动支持
# BUILD_GPU 编译GPU功能
# VTK_DIR VTK的安装目录,如果是自行安装的VTK需要定位到“VTK安装目录/lib/cmake/vtk-8.2”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=/home/ubuntu/pcl1.14.0/share/pcl-1.14
export VTK_DIR=/home/ubuntu/VTK9.3.0/lib/cmake/vtk-9.3export 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