win下C++部署深度学习模型之clion配置pytorch+opencv教程记录

news2025/1/18 8:56:14

win下clion配置pytorch和OpenCV

  • 一、clion配置vs编译器以及测试
  • 二、clion配置pytorch
    • 2.1、下载libtorch
    • 2. 2、环境变量配置
    • 2.3、cmakelist.txt编写
    • 2.4、main函数测试运行
  • 三、clion配置opencv
    • 3.1、源码下载
    • 3.2、编译
    • 3.3、环境变量配置
    • 3.4、cmakelist.txt编写
    • 3.5 main函数测试运行

博主是安装了vs后通过clion编辑器配置pytorch和opencv。

一、clion配置vs编译器以及测试

博主clion平时用的mingw编译,这里改为visual studio在安装过程中发现mingw有些不适配的问题,所以改为了vs编译。

首先点击【File】→【Settings】
在这里插入图片描述
【Toolchains】按图中所示进行设置后【Apply】
在这里插入图片描述

【Cmake】也需要进行如下设置:
在这里插入图片描述
最后注意这里也需要改为配置好的vs。
在这里插入图片描述

二、clion配置pytorch

2.1、下载libtorch

下载地址:pytorch官网
在这里插入图片描述
图里的CUDA版本向下兼容,比如图里的cuda11.8可适配11.8及其以下cuda版本。

红色框和绿色框分别是release和debug版本这里注意和clion配置vs匹配上即可。后续会详细说明。

2. 2、环境变量配置

下载后解压到任意指定安装目录。
在这里插入图片描述
进入到目录***\libtorch\share\cmake\Torch,比如博主是D:\pyTorch\libtorch-win-shared-with-deps-2.0.0+cu117\libtorch\share\cmake\Torch,复制此目录地址添加到环境变量。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
配置完成后重启电脑。

2.3、cmakelist.txt编写

cmake_minimum_required(VERSION 3.19)
project(ModelDeploy)

set(CMAKE_CXX_STANDARD 14)

set(CMAKE_PREFIX_PATH D:/pyTorch/libtorch-win-shared-with-deps-2.0.0+cu117/libtorch)
#set(Torch_DIR "E:/libtorch/share/cmake/Torch")
#include_directories("E:/libtorch/include")
#include_directories("E:/libtorch/include/torch/csrc/api/include")
find_package(Torch REQUIRED )

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

其中下图的目录地址为3中libtorch的安装目录。
在这里插入图片描述

2.4、main函数测试运行

#include <iostream>
#include <torch/script.h>
#include <memory>
#include <torch/torch.h>

int main() {
    std::cout << "Hello world." << std::endl;
    torch::Tensor a = torch::rand({2, 3});
    std::cout << a << std::endl;
    /*std::string path = "D:/aniya.jpg";
    Mat im = imread(path);
    imshow("image", im);
    waitKey(0);*/
    return 0;

}

成功运行:在这里插入图片描述

三、clion配置opencv

与libtorch不同,OpenCV需要编译后安装。

3.1、源码下载

OpenCV源码
在这里插入图片描述

下载后解压用clion打开
在这里插入图片描述

3.2、编译

同二中clion配置vs编译器,这里同样需要将clion的编译器设置为vs。
设置完成后点击【build】开始编译,编译结束后【install】。注意编译过程中可能会有很多warning,无需在意。

在这里插入图片描述

3.3、环境变量配置

同libtorch的环境变量配置,这里需要添加的环境变量为:**\opencv-4.5.5\cmake-build-release-visual-studio\install\x64\vc16\bin博主为D:\opencv\opencv-4.5.5\cmake-build-release-visual-studio\install\x64\vc16\bin;如果这里是用mingw编译的,目录则为**\cmake-build-debug\install\x64\mingw\bin
目录地址如下图所示:
在这里插入图片描述

环境变量配置后重启电脑生效。

3.4、cmakelist.txt编写

在1.3中cmakelist.txt中添加

set(OpenCV_DIR D:/opencv/opencv-4.5.5/cmake-build-release-visual-studio/install)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

在这里插入图片描述
图中目录即为OpenCV编译后的安装目录。

完整的cmakelist.txt:

cmake_minimum_required(VERSION 3.19)
project(ModelDeploy)

set(CMAKE_CXX_STANDARD 14)

set(CMAKE_PREFIX_PATH D:/pyTorch/libtorch-win-shared-with-deps-2.0.0+cu117/libtorch)
#set(Torch_DIR "E:/libtorch/share/cmake/Torch")
#include_directories("E:/libtorch/include")
#include_directories("E:/libtorch/include/torch/csrc/api/include")
find_package(Torch REQUIRED )

set(OpenCV_DIR D:/opencv/opencv-4.5.5/cmake-build-release-visual-studio/install)
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

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

3.5 main函数测试运行

#include <iostream>
#include <torch/script.h>
#include <memory>
#include <torch/torch.h>

#include <iostream>
#include <time.h>

#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;

int main() {
    std::cout << "Hello world." << std::endl;
    torch::Tensor a = torch::rand({2, 3});
    std::cout << a << std::endl;
    std::string path = "D:/aniya.jpg";
    Mat im = imread(path);
    imshow("image", im);
    waitKey(0);
    return 0;
}

成功运行:在这里插入图片描述

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

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

相关文章

揭 秘~月薪2-3万的程序员一天到底是怎么度过的?

程序员的高薪资&#xff0c;一直是大家热衷讨论的话题&#xff0c;几乎每隔一段时间就会在社交平台被网友们热议一番。 比如这条“月薪2万到3万的程序员的一天是怎么样度过的&#xff1f;”的帖子就一直排在知乎前列。 作为薪资可观的岗位&#xff0c;大家都非常好奇&#xff…

【Fiddler移动端抓包】~抓包不是偷窥,Fiddler教你看透移动应用背后的秘密~

目录 引言 抓包 什么是抓包 哪些场景下需要抓包 Fiddler Fiddler抓包原理 安装 Fiddler移动端抓包 第一步&#xff1a;允许远程计算机连接 第二步&#xff0c;设置手机网络代理 第三步&#xff0c;允许捕获HTTPS连接 第四步&#xff0c;手机安装证书 结语 引言 当…

探寻生机 | 数说故事助力微播易第七届风向大会,研判新风向,洞察新趋势

“过去一年&#xff0c;有的人用ChatGPT谁出具的北京烤鸭图片最准确搞怪&#xff0c;有的人却已经利用虚拟主播单场带货百万&#xff1b;有的人正在被AIGC淘汰&#xff0c;有的人却通过人机协作实现20秒制作100张创意图&#xff1b;有的百万粉丝接不到广告&#xff0c;有的仅靠…

使用python实现微博评论分词与关键词提取(从MySQL数据库中读取数据)

一、实验环境 &#xff08;1&#xff09;Windows 操作系统&#xff1b; &#xff08;2&#xff09;PyCharm 2019.1。 &#xff08;3&#xff09;数据库用户名为 root&#xff0c;密码为 123456. (4) 学校机房电脑&#xff0c;带有mysql 二、获取数据库信息 &#xff08;1&a…

【Linux从入门到精通】进程的基本概念

我们通过对上篇文章冯诺依曼体系结构对硬件进行讲解后&#xff0c; 本篇文章会对进程进行深入讲解。同时会讲解PCB&#xff08;进程控制块&#xff09;。希望本篇文章内容会对你有所帮助。 文章目录 一、再次理解操作系统 1、1 操作系统的作用 1、2 操作系统的管理 二、进程基本…

【Linux】12. 模拟实现shell

回顾 在之前的学习过程中&#xff0c;我们掌握了进程的相关概念&#xff0c;冯诺依曼体系结构&#xff0c;进程地址空间概念&#xff0c;进程状态&#xff0c;进程控制&#xff0c;进程退出&#xff0c;进程替换…等等一系列的基础知识&#xff0c;这些基础知识让我们清楚的知…

Qt6之字符串类内存分配新变化——16的次方增加

qt提供了比标准c string更强大&#xff0c;更丰富&#xff0c;更实用的字符串类QString&#xff0c;它的主要功能22个已经在之前逐一分析过&#xff0c;感兴趣的可前往以下链接查看&#xff0c;本文主要重点分析下qt在字符串类上面做的优化&#xff0c;主要是两个方面&#xff…

当产品进化遇见亿元福利,华帝携手人民日报为消费复苏添了一把火

这个五一黄金周&#xff0c;消费复苏的热火彻底被点燃。统计数据显示&#xff0c;2023年“五一”假期累计超过2.74亿人次出游&#xff0c;消费市场恢复到2019年同期水平。久违的“人间烟火气”再度回归。 除了旅游市场的火爆&#xff0c;同样助燃消费市场的还有全民“厨房焕新…

使用Vue+Python基于卷积神经网络前后端分离实现蔬菜种类预测系统

使用VuePython基于卷积神经网络前后端分离实现蔬菜种类预测系统 一、实现效果 1、种类预测界面 2、数据处理分析界面 3、网络模型界面 4、结果分析界面 二、需求分析 用户通过上传待预测图片到系统&#xff0c;系统预测出该图片对应的蔬菜种类&#xff0c;并且提示用户预测信…

基于Web的智慧储能电站3D可视化管理平台

电能作为现代社会的运转和发展的基础&#xff0c;是民生最基本的保障&#xff0c;其稳定性对国家经济发展至关重要。 建设背景 电力系统是一个稳态平衡系统&#xff0c;发电站的总发电功率需要等于用户端的总发电功率。如果两者不一致&#xff0c;就会导致整个电力系统的不稳…

[PyTorch][chapter 34][池化层与采样]

前言&#xff1a; 这里主要讲解一下卷积神经网络中的池化层与采样 目录 DownSampleMax poolingavg poolingupsampleReLu 1&#xff1a; DownSample 下采样,间隔一定行或者列进行采样&#xff0c;达到降维效果 早期LeNet-5 就采样该采样方式。 LeNet-5 2 Max pooling 最大值采样…

【28岁了,没有职业规划,没有目标,朋友推荐学云计算技术,能成吗?】

一般来说&#xff0c;当然可以的。云计算是一个不断发展的行业&#xff0c;不考虑年龄的因素&#xff0c;任何人都可以学习和掌握云计算的技能。28岁的年龄入行云计算是可行的&#xff0c;年龄方面还是符合企业的要求&#xff0c;而且云计算领域的发展趋势也显示出越来越多的企…

RIDGID里奇金属管线检测仪故障定位仪维修SR-20KIT

里奇RIDGID管线定位仪/检测仪/探测仪维修SR-20 SR-24 SR-60 美国里奇SeekTech SR-20管线定位仪对于初次使用定位仪的用户或经验丰富的用户&#xff0c;都同样可以轻易上手使用SR-20。SR-20提供许多设置和参数&#xff0c;使得大多数复杂的定位工作变得很容易。此外&#xff0c…

国内ChatGPT使用教程

猿说AI助手系统基于中国开源项目进行开发&#xff0c;由神诺网络科技工作室提供技术支持&#xff0c;后面我们会跟随官方持续更新。对话默认运行的是3.5-turbo模型&#xff0c;绘画采用Midjourney接口&#xff0c;待更新百度文心、通义千问、微信WeLM等。本系统仅用于技术研究&…

【k8s】【ELK】基于节点DaemonSet运行日志Agent实践【待写】

1.日志收集场景分析与说明 部署架构说明 对于那些将日志输出到&#xff0c;stdout与stderr的Pod&#xff0c; 可以直接使用DaemonSet控制器在每个Node节点上运行一个 <font colorred>filebeat、logstash、fluentd </font>容器进行统一的收集&#xff0c;而后写入…

论文阅读-DGM4-Detecting and Grounding Multi-Modal Media Manipulation

一、论文信息 论文名称&#xff1a;Detecting and Grounding Multi-Modal Media Manipulation 作者团队&#xff1a;南洋理工哈工大 Github:https://github.com/rshaojimmy/MultiModal-DeepFake 项目主页&#xff1a;https://rshaojimmy.github.io/Projects/MultiModal-DeepF…

在EasyCVR平台中添加设备提示成功但不显示是什么原因?

EasyCVR视频融合平台基于云边端智能协同架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;平台支持海量视频汇聚管理&#xff0c;可支持多协议接入&#xff0c;包括市场主流标准协议与厂家私有协议及SDK&#xff0c;如&#xff1a;国标GB28181、RTMP、RTSP/Onvi…

JECloud 运行前端模块所遇到的问题 汇总

1.依赖安装问题 官网 JECLoud 前端打包部署 1.1 部署前 注意 可以先下载 jecloud-libs 项目 尝试 部署安装 node版本不能过高&#xff01;选择node v14.17.5 版本 在部署前 如果当前node版本过高可以使用 nvm工具 切换到低版本&#xff0c; 但是需要注意的是 切换版本时 …

内网渗透(七十五)之域权限维持之DCShadow

DCShadow 2018年1月24日,在BlueHat安全会议上,安全研究员Benjamin Delpy 和 Vincent Le Toux 公布了针对微软活动目录域的一种新型攻击技术------DCShaow。利用该攻击技术,具有域管理员权限或企业管理员权限的恶意攻击者可以创建恶意域控,然后利用域控间正常同步数据的功能…

接口自动化测试-Requests之Session鉴权关联接口实战

目录 前言&#xff1a; 一、 简介 二、 实战操作 1. 登录接口 2. 查询订单接口 3. 新增订单接口 4. 修改订单接口 5. 删除订单接口 三、 结束语 前言&#xff1a; 接口自动化测试是软件测试过程中的重要一环&#xff0c;现在越来越多的公司开始使用自动化测试来提高测…