【Ubuntu20.04】Clion 配置 Libtorch + OpenCV

news2024/12/23 5:17:17

首先根据自己的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;
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1525409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汽车电子零部件(6):DMS/OMS、CMS

前言: 有一个部件过去不曾有,而如今有可能要标准化标配化,那就是Driver Monitoring System (DMS)驾驶员监控系统、Occupant Monitoring System (OMS)乘客监控系统和Camera Monitor System(CMS)摄像头监控系统。 汽车视觉技术的创新推动先进驾驶辅助系统的变革(ADAS),并…

ssh 下连接Mysql 查看数据库数据表的内容的方法及步骤

要通过SSH连接到MySQL数据库&#xff0c;可以按照以下步骤进行操作&#xff1a; 在本地计算机上打开终端或命令提示符。 使用SSH命令连接到远程服务器。命令的格式如下&#xff1a; ssh usernameserver_ip其中&#xff0c;username是指在远程服务器上的用户名&#xff0c;serv…

Testng框架集成新业务

1. 向公司开发人员要setting.xml 修改 <localRepository>/Users/qa/.m2/repository</localRepository> 为自己的仓库地址 2. 如果有开发人员给的下载好的Maven仓库 可以直接解压缩用

FPGA 学习需要哪些东西?

FPGA 学习需要哪些东西&#xff1f; 三样东西&#xff1a;第一就是完整的理论&#xff0c;第二一套开发板&#xff0c;第三可练手的项目 第一&#xff0c;一套完整的课程&#xff0c; 这个课程必须是紧跟技术发展的&#xff0c;适应市场的&#xff0c;这样不至于学完后发现太…

Python从0到100(六):Python分支和循环结构的应用

分支和循环结构的重要性不言而喻&#xff0c;它是构造程序逻辑的基础。 一、程序的结构控制 单分支结构&#xff1a; 单分支结构是分支结构中最简单的一种方式&#xff0c;单分支结构只需要判断一个条件&#xff0c;根据这个条件是否成立来决定是否执行一段语句。 二分支结…

Python递归函数画五角星

递归函数是在函数内部调用自己的函数。递归函数通常有两个部分&#xff1a;基本情况和递归情况。 基本情况是递归函数停止递归的条件&#xff0c;当满足基本情况时&#xff0c;递归函数将不再递归调用自己&#xff0c;而是返回结果。 递归情况是递归函数继续调用自己的条件&a…

RuiYi-Vue开源项目1-下载并实现运行RuiYi-Vue项目

下载并实现运行RuoYi项目 RuiYi-Vue介绍环境需要下载项目项目配置后端项目配置前端项目配置 启动后前端登录页面截图 RuiYi-Vue介绍 RuoYi-Vue 是一个 Java EE 企业级快速开发平台&#xff0c;基于经典技术组合&#xff08;Spring Boot、Spring Security、MyBatis、Jwt、Vue&a…

力扣-1351 统计有序矩阵中的负数

给你一个 m * n 的矩阵 grid&#xff0c;矩阵中的元素无论是按行还是按列&#xff0c;都以非严格递减顺序排列。 请你统计并返回 grid 中 负数 的数目。 示例 1&#xff1a; 输入&#xff1a;grid [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]] 输出&#xff1a;8 解释&…

迁移学习怎么用

如果想实现一个计算机视觉应用&#xff0c;而不想从零开始训练权重&#xff0c;比方从随机初始化开始训练&#xff0c;更快的方式是下载已经训练好权重的网络结构&#xff0c;把这个作为预训练&#xff0c;迁移到你感兴趣的新任务上。ImageNet、PASCAL等等数据库已经公开在线。…

力扣L16--- 189.轮转数组-2024年3月18日

1.题目描述 2.知识点 注1&#xff1a; System.arraycopy() 方法是Java中用于数组复制的一个静态方法。它允许将一个数组的部分或全部内容复制到另一个数组中的指定位置。其语法如下&#xff1a; public static void arraycopy(Object src, int srcPos, Object dest, int dest…

Linux磁盘配额

磁盘配额 概述 Linux系统作为一个多用户的操作系统&#xff0c;在生产环境中&#xff0c;会发生多个用户共同使用一个磁盘的情况&#xff0c;会造成Linux根分区的磁盘空间耗尽&#xff0c;导致Linux系统无法建立新的文件&#xff0c;从而出现服务程序崩溃、系统无法启动等故障…

Vue3项目部署安装

Vue3ts部署 查看官网安装项目vue3的命令&#xff08;四个&#xff09;其中有&#xff1a; yarn create vuelatest 我执行时遇到报错&#xff0c;可能是我yarn版本不是最新 的问题&#xff0c; 改用这个命令去掉latest即可 yarn create vue 新项目先要安装yarn依赖,才能yarn …

LLM文本生成—解码策略(Top-k Top-p Temperature)

{"top_k": 5,"temperature": 0.8,"num_beams": 1,"top_p": 0.75,"repetition_penalty": 1.5,"max_tokens": 30000,"message": [{"content": "你好","role": "user&…

十八、软考-系统架构设计师笔记-真题解析-2022年真题

软考-系统架构设计师-2022年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.云计算服务体系结构如下图所示&#xff0c;图中①、②、③分别与SaaS、PaaS、IaaS相对应&#xff0c;图中①、②、③应为( )。 A.应用层、基础设施层、平台层 B.应用层、平台层、基础设施层 C.平…

python知识点总结(二)

这里写目录标题 1、什么是解释性语言&#xff0c;什么是编译性语言&#xff1f;2、说说中作用域是怎么划分的3、type和isinstance方法的区别4、浅拷贝和深拷贝5、python中变量在内存中存储方式6、python中的封装、继承、多态7、python中内存管理机制是怎么样的&#xff1f;8、简…

Halcon 深度图片==>点云图

文件路径 链接:https://pan.baidu.com/s/1UfFyZ6y-EFq9jy0T_DTJGA 提取码:ewdi * 1.读取深度图片 *****************

ubuntu16.04上pycharm卡住关不了

在使用pycharm的过程中&#xff0c;突然卡住&#xff0c;黑屏&#xff0c;手动界面关闭失败&#xff0c;可尝试以下方法解决。 输入以下命令&#xff0c;查看所有和pycharm有关的进程 ps -ef | grep pycharm得到以下结果 根据相应的PID&#xff0c;输入以下命令&#xff0c;强…

php双端交易所

php双端交易所&#xff0c;如需联系 完美修复版&#xff0c;带所有 PHP双端交易所完美版: PHP双端交易所完美版,带前端源码https://gitee.com/ycsw/ex.git

【REST2SQL】13 用户角色功能权限设计

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…

ping和telnet的区别

ping是ICMP协议&#xff0c;只包含控制信息没有端口&#xff0c;用于测试两个网络主机之间网络是否畅通 telnet是TCP协议&#xff0c;用于查看目标主机某个端口是否开发。 总结&#xff1a;ping是物理计算机间的网络互通检查&#xff0c;telnet是应用服务间的访问连通检查&am…