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

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.mfbz.cn/a/21147.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【密码产品篇】动态口令系统密钥体系结构(SM3、SM4)

【密码产品篇】动态口令系统密钥体系结构&#xff08;SM3、SM4&#xff09; 动态口令是一种一次性口令机制&#xff0c;用户无须记忆口令&#xff0c;也无须手工更改口令。口令通过用户持有的客户端器件生成&#xff0c;并基于一定的算法与服务端形成同步&#xff0c;从而作为…

oracle 学习之 unpivot/pivot函数及hive实现该功能

Oracle中pivot函数详解_实泽有之&#xff0c;无泽虚之的博客-CSDN博客pivot函数格式&#xff1a;pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值))&#xff1b;pivot函数说明&#xff1a;实现将指定字段的值转换为列的效果。https://blog.csdn.net/qq_40018576/…

Win11的两个实用技巧系列之关闭分屏模式方法

怎么关闭Win11电脑分屏模式?Win11关闭分屏模式方法 有用户在使用电脑的时候不小心开启了电脑的分屏模式&#xff0c;导致自己无法正常的进行电脑操作了&#xff0c;本文就为大家带来了Win11关闭分屏模式方法&#xff0c;一起看看吧 Win11电脑分屏模式怎么关闭&#xff1f;有用…

千万不要乱操作了!医院机房这么做真高级

各类中心数据机房广泛分布于银行、库房、交通、电信、医院、教育等行业。系统故障和人为操作不当可能导致各种业务中断或数据丢失&#xff0c;进而影响企业业务的停滞和运行。 医院管理3大难题和挑战 01.缺乏预警、告警机制 医院在使用自动化监控系统之前&#xff0c;主要靠人…

【JVM】1. JVM与Java体系结构

文章目录 1.1. 前言&#x1f349;1.2. 参考书目&#x1f349;1.3. Java及JVM简介&#x1f349;1.4. Java发展的重大事件&#x1f349;1.5. 虚拟机与Java虚拟机&#x1f349;1.6. JVM的整体结构&#x1f349;1.7. Java代码执行流程&#x1f349;1.8. JVM的架构模型&#x1f349;…

MongoDB 查询文档中使用正则选择器($regex)

之前我们介绍过使用文本选择器&#xff08;$text&#xff09;查询文档&#xff0c;如果您需要进一步了解&#xff0c;可以参考&#xff1a; MongoDB 查询文档中使用文本选择器&#xff08;$text&#xff09;https://blog.csdn.net/m1729339749/article/details/130605491 本篇…

进程概念

目录 冯诺依曼体系结构 操作系统OS 系统调用和库函数概念 进程 task_struct内容分类 组织进程 初识fork 进程状态 Z(zombie)-僵尸进程 孤儿进程 进程优先级 环境变量 和环境变量相关的命令 环境变量的组织方式 程序地址空间 冯诺依曼体系结构 关于冯诺依曼&…

制定进度计划是成功项目管理的必由之路

项目经理王斌接到一个新项目&#xff0c;与各项目干系人没有建立有效的联系&#xff0c;他们无法了解项目进展情况。甚至连项目团队的参与人员自身对项目整体情况也没有清楚的认识&#xff0c;而只管自己那一部分&#xff0c;整个开发过程完全是一种黑盒模式&#xff0c;项目组…

windows提权

权限提升概述 1、提权介绍 权限提升&#xff1a;攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制&#xff0c;提权至高权限的管理员用户&#xff0c;从而获取对整个系统的控制权 windows&#xff1a;user --> system/administrator linux&#xff1a;user --&g…

5th-Generation Mobile Communication Technology(五)

目录 一、5G/NR 1、 快速参考&#xff08;Quick Reference&#xff09; 2、5G Success 3、5G Challenges 4、Qualcomm Videos 二、PHY and Protocol 1、Frame Structure 2、Numerology 3、Waveform 4、Frequency Band 5、BWP 6、Synchronization 7、Beam Management 8、CSI Fra…

超细!从零安装压测工具 jmeter(附JDK下载安装教程,20230516的JDK8最新版)

两步走&#xff0c;安装 JDK 和 jmeter&#xff0c;如果安装了JDK的同志可以直接看第二步。 针对的操作系统&#xff1a;Windows。 下载JDK 官网指路&#xff08;处于稳定性考虑&#xff0c;安装的JDK8&#xff09;&#xff1a; Java Downloads | Oraclehttps://www.oracle.c…

MySQL学习(基础篇1.0)

MySQL概述&#xff08;基础&#xff09; SQL 全称Structured Query Language,结构化察浑语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库的统一标准。 SQL通用语法 SQL语言的统统用语法&#xff1a; SQL语句可以单行或多行书写&#xff0c;以分号…

数字化赋能,探索智慧银行建设的最佳实践

导语 | 数字经济时代&#xff0c;数字化已成为银行业转型升级的战略手段。近年来&#xff0c;商业银行纷纷加大对信息科技的投入&#xff0c;数字化在改变银行业务模式的同时&#xff0c;更是构建起了数字金融新生态。今天&#xff0c;我们特邀腾讯云 TVP 行业大使、舜源科技合…

安科瑞电能表对于预付费平台的费控策略应用

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要:基于智能电能表的预付费系统平台可以实现对预付费客户的适时算费、远程费控和服务。预付费系统的费控策略包括算费子策略、催费预警提醒子策略、欠费停电子策略&#xff0c;介绍3个子策略的制定原则、设计流程&…

电脑怎么截图?常见的4种截图方法分享!

案例&#xff1a;有人知道在电脑上怎么截图&#xff1f; 【有时候&#xff0c;用截图表达事情会更加清楚&#xff0c;但是我只会手机截图&#xff0c;不知道在电脑上怎么截图。有没有小伙伴知道电脑怎么截图&#xff1f;】 在日常使用电脑时&#xff0c;我们经常需要截图来记…

java+springboot高校校友校园信息管理系统

本高校校友信息管理系统使用Web开发&#xff0c;运行在Internet环境之上&#xff0c;系统的后台编程语言使用JAVA&#xff0c;数据库使用MySQL。完成了两个用户角色的功能&#xff0c;管理员管理所有信息&#xff0c;前台学生用户登录后查看公告&#xff0c;在线捐赠申请&#…

java版企业电子招投标采购系统源码——功能模块功能描述+数字化采购管理 采购招投标

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外…

基于K8sSVC springboot 服务间调用

公司项目私有化部署&#xff0c;甲方要求服务间调用使用K8sSVC完成服务间调用。需要把原有基于springbootnacos 服务注册发现改造为k8ssvc完成服务间注册发现。 首先了解一下k8s svc&#xff1a; K8S核心概念之SVC&#xff08;易混淆难理解知识点总结&#xff09;_k8s svc_倾…

Push rejected,用Git修改已提交的注释

问题&#xff1a;有时候因注释与git规定的模板不匹配&#xff0c;会导致远程提交被拒绝 Push rejected 解决&#xff1a;修改不符合规范的注释再push即可 1、打开命令窗口 在项目根目录下右键点击出 Git批处理命令窗口。 2、查看已提交的commit 运行命令&#xff1a;git reba…

jpg怎么转换成png格式?四种转换方式试试看

很多时候&#xff0c;我们需要将JPG&#xff08;Joint Photographic Experts Group&#xff09;格式转换成PNG&#xff08;Portable Network Graphics&#xff09;格式&#xff0c;从而便于图片的使用。那么&#xff0c;将JPG转换成PNG有什么作用呢&#xff1f;首先&#xff0c…
最新文章