当前位置: 首页 > news >正文

Windows下 CLion中,配置 OpenCV、LibTorch

首先按照win下C++部署深度学习模型之clion配置pytorch+opencv教程记录 步骤配置。

LibTorch 部分

在测试LibTorch时会出现类似 c10.dll not found 的问题(Debug才有):

在这里插入图片描述

参考C++部署Pytorch(Libtorch)出现问题、错误汇总和
如何在windows10上使用cmake配置libtorch(vs2022版)

主要是MSVC需要这些 dll文件 。 可以如下修改CmakeList.txt让它找到:

cmake_minimum_required(VERSION 3.12)
project(opencv_test)set(CMAKE_CXX_STANDARD 17)set(CMAKE_PREFIX_PATH C:/Libraries/libtorch-win-shared-with-deps-2.3.0+cu118/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)
message(STATUS "torch status: ${TORCH_FOUND}")
message(STATUS "torch library: ${TORCH_LIBRARIES}")
message(STATUS "TORCH_INSTALL_PREFIX: ${TORCH_INSTALL_PREFIX}")add_executable(opencv_test main.cpp)
target_link_libraries(opencv_test ${TORCH_LIBRARIES})if (MSVC)file(GLOB TORCH_DLLS "${TORCH_INSTALL_PREFIX}/lib/*.dll")add_custom_command(TARGET opencv_testPOST_BUILDCOMMAND ${CMAKE_COMMAND} -E copy_if_different${TORCH_DLLS}$<TARGET_FILE_DIR:opencv_test>)
endif (MSVC)if (CMAKE_VERSION VERSION_GREATER 3.12)set_property(TARGET opencv_test PROPERTY CXX_STANDARD 17)
endif()

OpenCV 部分

clion编译OpenCV时,install的位置在这(更多参考):
在这里插入图片描述

不能用clion编译,还是会出现找不到 dll文件的问题!!!

参考如下链接用VS编译:

Windows 下使用 CMake + Visual Studio 2022 编译 OpenCV 4.8.1 及其扩展模块 (主要参考)

vs2019编译opencv

注: Opencv_world勾选后后面build可能会出问题,不知道怎么解决建议别勾。

之后记得把 D:\prj\opencv\opencv4\out\install\x64-Debug\x64\vc17\bin添加到环境变量。

之后在camke时你可能又出现了问题:

CMake Warning at C:/Libraries/opencv-4.8.1/cmake-build-release/install/OpenCVConfig.cmake:190 (message):Found OpenCV Windows Pack but it has no binaries compatible with yourconfiguration.You should manually point CMake variable OpenCV_DIR to your build of OpenCVlibrary.
Call Stack (most recent call first):CMakeLists.txt:8 (find_package)CMake Error at CMakeLists.txt:8 (find_package):Found package configuration file:C:/Libraries/opencv-4.8.1/cmake-build-release/install/OpenCVConfig.cmakebut it set OpenCV_FOUND to FALSE so package "OpenCV" is considered to beNOT FOUND.

这是因为OpenCV_DIR 应当精确到lib!!! 故意的还是不小心的???

set(OpenCV_DIR C:/Libraries/opencv-4.8.1/cmake-build-release/install/lib)

完整工程文件

CmakeList.txt

cmake_minimum_required(VERSION 3.12)
project(opencv_test)
set(CMAKE_CXX_STANDARD 17)set(CMAKE_BUILD_TYPE "Release")set(OpenCV_DIR C:/Libraries/opencv-4.8.1/build/install/lib)  # 这里要精确到lib!
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
message(STATUS "OpenCV status:" ${OpenCV_FOUND})
message(STATUS "OpenCV Libs:" ${OpenCV_LIBS})set(CMAKE_PREFIX_PATH C:/Libraries/libtorch-win-shared-with-deps-2.3.0+cu118/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)
message(STATUS "torch status: ${TORCH_FOUND}")
message(STATUS "torch library: ${TORCH_LIBRARIES}")
message(STATUS "TORCH_INSTALL_PREFIX: ${TORCH_INSTALL_PREFIX}")add_executable(opencv_test main.cpp)
target_link_libraries(opencv_test${TORCH_LIBRARIES}${OpenCV_LIBS}
)if (MSVC)file(GLOB TORCH_DLLS "${TORCH_INSTALL_PREFIX}/lib/*.dll")file(GLOB OpenCV_DLLS "${OpenCV_DIR}/../bin/*.dll")add_custom_command(TARGET opencv_testPOST_BUILDCOMMAND ${CMAKE_COMMAND} -E copy_if_different${TORCH_DLLS} ${OpenCV_DLLS}$<TARGET_FILE_DIR:opencv_test>)
endif (MSVC)

main.cpp

#include <iostream>
#include <torch/script.h>
#include <torch/torch.h>#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>void test_libtorch_version() {if (torch::cuda::cudnn_is_available()){std::cout << "cuDNN is available." << std::endl;}else{std::cout << "cuDNN is not available." << std::endl;}if (torch::cuda::is_available()){std::cout << "CUDA is available." << std::endl;}else{std::cout << "CUDA is not available." << std::endl;}std::cout << "Device count : " << torch::cuda::device_count() << std::endl;}int main(int, char**)  {torch::Tensor a = torch::rand({2, 3});std::cout << a << std::endl;test_libtorch_version();torch::Tensor b = torch::randint(10, 20, { 3, 2 });std::cout << b << std::endl;std::string path = "C:\\Users\\THM\\Documents\\Projects\\test_openvins_py\\data\\coco_bike.jpg";cv::Mat im = cv::imread(path);cv::imshow("image", im);cv::waitKey(0);return 0;
}

相关文章:

Windows下 CLion中,配置 OpenCV、LibTorch

首先按照win下C部署深度学习模型之clion配置pytorchopencv教程记录 步骤配置。 LibTorch 部分 在测试LibTorch时会出现类似 c10.dll not found 的问题&#xff08;Debug才有&#xff09;&#xff1a; 参考C部署Pytorch&#xff08;Libtorch&#xff09;出现问题、错误汇总和 …...

机器学习知识点总结

简介&#xff1a;随着人工智能&#xff08;AI&#xff09;蓬勃发展&#xff0c;也有越来越多的人涌入到这一行业。下面简单介绍一下机器学习的各大领域&#xff0c;机器学习包含深度学习以及强化学习&#xff0c;在本节的机器学习中主要阐述一下机器学习的线性回归逻辑回归&…...

OBproxy基础运维

简介 obproxy 属于OceanBase的代理&#xff0c;生产环境中 OceanBase 数据库的数据 会以 多副本的形式 存放在各个 OBServer 节点上&#xff0c;obproxy 接收用户发出的 SQL 请求&#xff0c;并将 SQL 请求转发至最佳目标 OBServer 节点&#xff0c;最后将执行结果返回给用户&…...

【Python】 探索Pytz库中的时区列表

基本原理 在Python中&#xff0c;处理时区是一个常见但复杂的问题。pytz是一个Python库&#xff0c;它提供了对时区的精确和丰富的支持。pytz库是datetime模块的补充&#xff0c;它允许更准确地处理时区信息。pytz库包括了IANA时区数据库&#xff0c;这个数据库包含了全球的时…...

C#操作MySQL从入门到精通(9)——Mysql中的数据类型以及对应的C#中的数据类型

1、本文介绍...

第六讲:AD、DA的工作原理及实现、运放电路

DA 数模转换器 (DAC) 数模转换器&#xff08;Digital-to-Analog Converter&#xff0c;简称DAC&#xff09;是一种将数字信号转换为模拟信号的电子装置。DAC在各种电子设备中广泛应用&#xff0c;如音频设备、通信系统、测量设备和控制系统中。以下是DAC的主要概念和应用。…...

计网ppt标黄知识点整理第(4)章节——谢希仁版本、期末复习自用

路由器&#xff1a;查找转发表&#xff0c;转发分组。 IP网的意义&#xff1a;当互联网上的主机进行通信时&#xff0c;就好像在一个网络上通信一样&#xff0c;看不见互连的各具体的网络异构细节。如果在这种覆盖全球的 IP 网的上层使用 TCP 协议&#xff0c;那么就…...

[数据集][目标检测]RSNA肺炎检测数据集VOC+YOLO格式6012张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;6012 标注数量(xml文件个数)&#xff1a;6012 标注数量(txt文件个数)&#xff1a;6012 标注…...

AndroidStudio中debug.keystore的创建和配置使用

1.如果没有debug.keystore,可以按照下面方法创建 首先在C:\Users\Admin\.android路径下打开cmd窗口 之后输入命令:keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000 输入两次密码(密码不可见,打码处随便填写没关系) 2.在build…...

什么是最好的手机数据恢复软件?6 款手机数据恢复软件 [2024 年更新]

什么是最好的手机数据恢复软件&#xff1f;在这篇文章中&#xff0c;您将了解 6 款最好的免费手机数据恢复软件&#xff0c;并学习如何恢复数据的完整指南。 最好的手机数据恢复软件是什么&#xff1f; 手机数据恢复软件是恢复智能手机中丢失或删除的文件、消息、照片和其他宝…...

力扣2653.滑动子数组的美丽值

力扣2653.滑动子数组的美丽值 计数排序&#xff1a;数值作为下标 记录个数 求第x小的数 &#xff1a; 暴力枚举负数 直到找到第x个负数 class Solution {public:vector<int> getSubarrayBeauty(vector<int>& nums, int k, int x) {const int BIAS 50;int c…...

2024-06-04 架构-不同层次的抽象的处理-分析

摘要: 2024-06-04 架构-不同层次的抽象的处理-分析. 不同层次的抽象: 将事情做不同的情况的解耦&#xff0c;关于在于理解事情本身的性质&#xff0c;如何解耦&#xff0c;如何处理当将事情解耦成不同的情况后&#xff0c;就可以针对不同的事情&#xff0c;最不同的处理。这么…...

MySQL——C语言连接数据库

MySQL Connection ​ 连接数据库的客户端除了命令行式的还有图形化界面版本&#xff0c;网页版本&#xff0c;当然也包括语言级别的库或者是包&#xff0c;能够帮助我们直接连接数据库&#xff1b; 一、语言连接库下载 方式一&#xff1a;不建议使用&#xff0c;需要自己配置…...

新能源汽车推行精益生产:绿色动力下的效率革命

在新能源汽车行业迅猛发展的当下&#xff0c;推行精益生产已成为提升竞争力的关键所在。精益生产&#xff0c;作为一种以客户需求为导向、追求流程最优化和浪费最小化的管理理念&#xff0c;正逐步在新能源汽车领域展现出其独特的魅力。 新能源汽车的兴起&#xff0c;不仅代表了…...

FCA-九数云 试题及答案

第1题【判断题】仪表板中筛选器只能绑定图表或者图表所在分析表的字段&#xff0c;无法绑定父表中的字段。 A. 正确B. 错误 正确答案&#xff1a;B 第2题【单选题】一张绩效奖金看板&#xff0c;分享给公司所有成员查看。希望输入个人的信息前&#xff0c;只可以查看自己的相关…...

qt dragEnterEvent dragLeaveEvent dragMoveEvent dropEvent都不响应的问题解决方案。

环境&#xff1a;vs2019qt5.14.2 坑哦。让我搞了好久。各种不执行&#xff0c;最后发现,不用vs调制&#xff0c;直接运行exe就能接收拖拽了。 记录一下,感觉是qt的bug。上代码。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QText…...

LVS精益价值管理系统 DownLoad.aspx 任意文件读取漏洞复现

0x01 产品简介 LVS精益价值管理系统是杭州吉拉科技有限公司研发的一款专注于企业精益化管理和价值流优化的解决方案。该系统通过集成先进的数据分析工具、可视化的价值流映射技术和灵活的流程改善机制&#xff0c;帮助企业实现高效、低耗、高质量的生产和服务。 0x02 漏洞概述…...

【GIC400】——中断使能

文章目录 中断使能全局中断使能RISC-VCortex-MCortex-A中断控制器使能PLICNVICGIC模块中断使能参考系列文章 【ARMv7-A】——异常与中断 【ARMv7-A】——异常中断处理概述 【ARMv7-A】——进入和退出异常中断的过程</...

容器项目之前后端分离

容器化部署ruoyi项目 #需要的镜像nginx、java、mysql、redis、 #导入maven镜像、Java镜像和node镜像 docker load -i java-8u111-jdk.tar docker load -i maven-3.8.8-sapmachine-11.tar docker load -i node-18.20.3-alpine3.20.tar #拉取MySQL和nginx镜像 docker pull mysql…...

游戏心理学Day04

第二章 心理学的生理基础 第三节 游戏中的感觉应用 认知地图 表象是在没有外在知觉信息来源的情况下&#xff0c;对类似知觉信息的加工。 表征是指信息或知识在心理活动中的表现和记载方式&#xff0c;表征是外部事物在心理活动中的内部再现。 我们对世界的表象&#xff0c…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...