【Ubuntu20.04】Clion 配置 Libtorch + OpenCV

首先根据自己的CUDA版本安装正确对应的cudacudnn并进行配置。
在这里插入图片描述
这里安装的是cuda-11.3版本,以下基于这个版本进行安装。

1. 安装 Clion

因为Clion更容易直接编写CMakelists.txt,所以使用Clion作为IDE。
需要在File -> Setting -> CMakeCMake options中添加

-DCMAKE_CUDA_ARCHITECTURES=86 -DCMAKE_CUDA_COMPILER=”/usr/local/cuda/bin/nvcc”

不然在编译时会出现“CMAKE_CUDA_ARCHITECTURIES must be non-empty if set.”的错误。

2. 下载 Libtorch

注意libtorch的版本一定要和pytorch的版本完全相同。可根据Libtorch各版本下载进行下载,这里下载的是对应的1.11.0版本

https://download.pytorch.org/libtorch/cu113/libtorch-shared-with-deps-1.11.0%2Bcu113.zip

3. 下载 OpenCV

注意opencv的版本不能高于4.0.0,不然在编译的时候会因为-D_GLIBCXX_USE_CX11_ABI=0问题与libtorch产生冲突。所以不要使用sudo apt-get install -y libopencv-dev直接安装,会下载最新版本。这里安装3.4.20版本

首先进行依赖包的下载

sudo apt update
sudo apt install build-essential cmake git pkg-config libgtk-3-dev \
                 libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
                 libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \
                 gfortran openexr libatlas-base-dev python3-dev python3-numpy \
                 libtbb2 libtbb-dev libdc1394-22-dev

如果在下载时遇到没有依赖包的问题,可以使用

sudo apt-get install aptitude
sudo aptitude install XXX
会有如下提示
Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:
Downgrade the following packages:
Accept this solution? [Y/n/q/?] y
The following packages will be DOWNGRADED:
Accept this solution? [Y/n/q/?] y

从官方库中下载对应版本的opencv

git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 3.4

git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 3.4

进行build

cd ~/opencv
mkdir build
cd buildcmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_C_EXAMPLES=ON \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
      -D BUILD_EXAMPLES=ON ..

最后进行安装

make -j$(nproc)
sudo make install
sudo ldconfig

4. 编写 CMakelists.txt

Clion的工程下的CMakelists.txt中进行如下编写

cmake_minimum_required(VERSION 3.27)
project(test2)
set(CMAKE_CXX_STANDARD 14)
set(Torch_DIR /home/t2/libtorch/share/cmake/Torch)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARIES})
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS})

add_executable(test2 main.cpp)
target_link_libraries(test2 ${TORCH_LIBRARIES})
target_link_libraries(test2 ${OpenCV_LIBS})
set_property(TARGET test2 PROPERTY CXX_STANDARD 14)

最后点击File -> Reload CMake Project重新build就完成了。

5. 测试

以下是测试代码main.cpp

#include <iostream>
#include <torch/torch.h>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;

int main(){
	torch::Tensor tensor = torch::rand({2, 3});
	std::cout << tensor << std::endl;

	Mat image = cv::imread("/t2/clion-2023.3.4/bin/clion.png", 1);
	cv::imshow("image", image);
	cv::waitKey(0);
	
	return 0;
}

测试效果如下
在这里插入图片描述

相关推荐

  1. Ubuntu2204配置samba

    2024-03-15 05:02:03       75 阅读
  2. ubuntu18.04clion无法进入断点

    2024-03-15 05:02:03       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 05:02:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 05:02:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 05:02:03       87 阅读
  4. Python语言-面向对象

    2024-03-15 05:02:03       96 阅读

热门阅读

  1. OpenCV亮度对比度调节

    2024-03-15 05:02:03       39 阅读
  2. 机器视觉学习(三)—— 保存视频流

    2024-03-15 05:02:03       39 阅读
  3. 动态规划矩阵

    2024-03-15 05:02:03       40 阅读
  4. 云计算有什么作用

    2024-03-15 05:02:03       40 阅读
  5. ARMv8系统寄存器-0

    2024-03-15 05:02:03       45 阅读