Windows下 CLion中,配置 OpenCV、LibTorch

news2024/11/17 0:18:21

首先按照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_test
            POST_BUILD
            COMMAND ${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 your
  configuration.

  You should manually point CMake variable OpenCV_DIR to your build of OpenCV
  library.
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.cmake

  but it set OpenCV_FOUND to FALSE so package "OpenCV" is considered to be
  NOT 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_test
            POST_BUILD
            COMMAND ${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;
}

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

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

相关文章

git常见问题及解决

文章目录 git常见问题及解决1. 不同操作系统使用git时&#xff0c;CRLF的处理换行问题1.1 什么是CRLF和LF1.2 在Git中设置自动转换 2. 多个仓库相同代码推送被拒绝3. git使用vi编辑器时候报错&#xff1a;Swap file "./.git/.COMMIT_EDITMSG.swp" already exists!4. …

3. redis常见部署架构

redis常见部署架构 一、redis常见部署架构1、常见部署架构2、多实例部署2.1 规划安装目录、配置文件2.2.2 编辑实例配置文件2.2.3 启动实例2.2.4 测试数据读写 3、redis主从复制3.1 规划3.2 从服务器配置3.3 验证主从状态3.4 主从角色切换 4、分片集群4.1 原理4.2 分片集群的部…

completefuture造成的rpc重试事故

前言 最近经历了一个由于 completefuture 的使用&#xff0c;导致RPC重试机制触发而引起的重复写入异常的生产bug。复盘下来&#xff0c;并非是错误的使用了completefuture&#xff0c;而是一些开发时很难意识到的坑。 背景 用户反馈通过应用A使用ota批量升级设备时存在概率…

美容美发门店收银管理系统源码分享-美业系统App端闪退怎么办?

美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 活动促销 PC管理后台、手机APP、iPad APP、微信小程序 ▶ 手机App应用闪退怎么办&#xff1f;博弈美业系统为例 • 可能原因&#xff1a; 1、手机版本过低 2、未更新…

第二证券炒股技巧:短线炒股技巧?

在股票商场上&#xff0c;出资者分为长线和短线这两大类&#xff0c;其间短线炒股存在以下技巧&#xff1a; 1、早盘集合竞价时间上的技巧 早上集合竞价对短线出资者来说比较重要&#xff0c;其间早上集合竞价期间9&#xff1a;15-9:20之间出资者能够进行撤单操作&#xff0c…

Spring boot集成通义千问大模型实现智能问答

Spring boot集成通义千问大模型实现智能问答 背景 我在用idea进行java开发时发现了通义灵码这款免费的智能代码补全插件&#xff0c;用了一段时间了&#xff0c;感觉很不错。就想着在自己的项目中也能集成通义千问大模型实现智能回答&#xff0c;毕竟对接openai需要解决网络问…

【WEEK15】 【DAY1】异步任务【中文版】

2024.6.3 Monday 目录 17.异步、定时、邮件任务17.1.异步任务17.1.1.新建springboot-09-test项目17.1.2.创建一个service包17.1.2.1.创建一个类AsyncService 17.1.3.编写controller包17.1.3.1.编写AsyncController类 17.1.4.运行Springboot09TestApplication.java17.1.5.修改S…

Python课设-学生信息管理系统

一、效果展示图 二、前端代码 1、HTML代码 <1>index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

【Unity美术】spine软件的使用—2D动画的制作

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

通用代码生成器应用场景四,跨编程语言翻译

通用代码生成器应用场景四&#xff0c;跨编程语言翻译 如果您有一个Java工程&#xff0c;想把它移植到Rust或Golang语言中去&#xff0c;希望尽可能加快研发速度。 如果您的系统是通用代码生成器开发的&#xff0c;保留了系统的SGS源文件或者SGS2的Excel模板&#xff0c;您可…

Flink的简单学习(kafka)三

一 Kafka的介绍 1.kafka是一个高吞吐的分布式消息系统&#xff0c;是一个消息队列。 2.生产者负责生产数据 &#xff0c;消费者负责消费数据 3.特点&#xff1a; 生存者消费者模型&#xff0c;FIFO 高性能&#xff1a;单节点支持上千个客户端&#xff0c;百MB/s吞吐 持久…

Pycharm创建Conda虚拟环境时显示CondaHTTPErOT

原因&#xff1a;conda源出问题了&#xff0c;之前可以用&#xff0c;现在报错。 最好的解决方案&#xff1a;找到conda源&#xff0c;换源即可。 步骤&#xff1a; 1.修改 .condarc 文件&#xff08;文件的位置在&#xff1a;C:\Users\(你的用户名)\.condarc&#xff09;&a…

关于认证协议

本地用户认证 本地认证的意思就是&#xff0c;我们的电脑上存储着自己的账号密码&#xff0c;无论电脑是否联网&#xff0c;只要能开机&#xff0c;就可以输入账号密码登录到电脑中&#xff0c;工作组就是采用本地认证 本地认证流程 winlogon.exe -> 接收用户输入 -> …

基于深度学习的中文标点预测模型-中文标点重建(Transformer模型)【已开源】

基于深度学习的中文标点预测模型-中文标点重建&#xff08;Transformer模型&#xff09;提供模型代码和训练好的模型 前言 目前以深度学习对文本自动添加标点符号研究很少&#xff0c;已知的开源项目并不多&#xff0c;详细的介绍就更少了&#xff0c;但对文本自动添加标点符号…

AVL树的介绍与实现

前言 我们上一期介绍了二叉搜索树并做了实现&#xff0c;本期我们来继续学习另一个更优的树即AVL树&#xff01; 本期内容介绍 什么是AVL树&#xff1f; AVL树的实现 AVL树的性能分析 在正式的介绍AVL树之前&#xff0c;我们先来回忆一下二叉搜索树的特点&#xff1a;左子树的…

专业好用的屏幕捕获工具

一、简介 1、一款功能全面、操作简便的屏幕捕获工具,它不仅支持常规的截屏功能,还包括了录屏、OCR文字识别、翻译、GIF制作等多项实用功能。该软件适用于Windows操作系统,旨在为用户提供一站式的屏幕捕捉解决方案 二、下载 1、下载地址: 官网链接:https://verycapture.com…

第二十七章HTML.CSS综合案例

1.产品介绍 效果图如下&#xff1a; 代码部分如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

【UnityShader入门精要学习笔记】第十七章 表面着色器

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 表面着色器…

274 基于matlab的随机粗糙表面对微气体轴承内气体压强分布的影响

基于matlab的随机粗糙表面对微气体轴承内气体压强分布的影响。采用差分法求解气体轴承的雷诺方程&#xff0c;通过尺寸参数、分形维数对粗糙度表面设置&#xff0c;滑流参数设置&#xff0c;实现气压分布可视化结果显示。程序已调通&#xff0c;可直接运行。 274 气体轴承 随机…

SpringCloud-面试篇(二十三)

&#xff08;1&#xff09;SpringCloud常见组件有那些 有无数微服务需要相互调用&#xff1a;可以用远程调用组件OpenFeign组件&#xff0c;也可以用Dobble 这么多微服务相互调用怎么管理&#xff1a;就用到注册中心组件Nacos&#xff0c;Eureka 所有的服务去找注册中心做注…