cmake+OpenCV4.8.0+contrib4.8.0+cuda 12.2编译踩坑

cmake+OpenCV4.8.0+contrib4.8.0+cuda 12.2编译踩坑

准备工具

  • cmake (去官网下载)
  • OpenCV 我下载的是官网发布最新的稳定版本对应的源码,官网目前是4.8.0,github下一个(连不上的可以网上找找资源或者科学上网)
  • OpenCV contrib4.8.0 扩展库,同样是github下载,这个库是扩展库,包括nonfree这类不在标准发布中的内容,用不到的可以不下
  • cuda 看你的显卡支持的版本对应下,cuda支持的vs版本有区别,vs2015只能支持9.0,cuda 12.1以上的版本才支持vs2022(可以参考这个网址中的版本介绍:https://blog.csdn.net/m0_55334148/article/details/132880560)
  • cudnn cuda的深度学习架构,找到官网对应下一个
  • GDCM 这个是用于dicom的库,如果用不到可以忽略
  • ippicv 这个东西挺坑的,我用camke编译始终下不下来,没办法自己下了一个(大概率需要科学上网),这个如果下载失败会在cmake显示一个网址,用那个网址去下
  • face_landmark_model 这个东西是face模块的,如果用不到也可以考虑去掉,这个也是大概率下不下来的东西,cmake提示后手动去下载

编译以及问题的解决

cmake 的各种设置

先将下载的代码文件解压,然后创建一个build文件夹用于存放cmake之后的内容
在这里插入图片描述
打开cmake,选择OpenCV源码的路径以及生成结果存放路径
在这里插入图片描述
第一次点击configuration会弹出需要选择编译器,这个时候需要根据cuda支持的版本确定需要使用的vs版本,同时下方会有选择是x64还是win32的选项
在这里插入图片描述等待第一次配置完成,会有许多红色提示,根据我们的需求配置这些内容。

首先,为了之后的生成速度,我不需要test和sample相关的内容,所以这些标签可以去掉
在这里插入图片描述java和python的库我也不需要,搜索之后取消勾选
在这里插入图片描述然后搜索world,勾选,这个选项可以将dll生成到一个文件里,方便使用,否则会出现好多dll配工程的时候比较麻烦
在这里插入图片描述搜索nonfree,这个控制是否编译扩展库,如果使用contrib则需要勾选并填写extraPath,如果不使用可以省略这一步

在这里插入图片描述extraPath的目录需要配到mmodules
在这里插入图片描述需要cuda的内容,搜索cuda都选了,如果使用dnn则需要先安装cudnn
在这里插入图片描述cudnn安装,解压后将对应文件夹中的内容复制到安装cuda文件夹中对应的位置.
cudnn解压后包含以下内容
在这里插入图片描述一般cuda的安装路径都在下面的路径中,这个路径中会包含不同版本的cuda,找到cudnn对应的版本的文件夹,如果找不到路径就去查看环境变量中cuda的路径
在这里插入图片描述
按照文件夹名称对应复制就行
在这里插入图片描述在cmake中搜索dcm,勾选
在这里插入图片描述点击configuration,第二次配置之后会出现一些新的选项,包含cuda和dcm的内容。

这个时候下方会有一些报错提示,ippicv的这个一般都是因为下载不成功,手动下载 ,之后解压到opencv的3rdparty中,之后点击configuration就可以检测到这个文件了
在这里插入图片描述在这里插入图片描述在这里插入图片描述
如果提示face_landmark_model 下载不成功,则根据报错的网址手动下载,并将文件保存到下面的目录中,同时将文件夹中带有校验码的文件名拷贝后给下载的文件进行重命名
在这里插入图片描述在这里插入图片描述如果提示CMP0146或者CMP0148的错误,则需要修改OpenCV4.8文件夹中的cmakelist文件,可以在其中看到许多类似这种格式的代码,在其中加入关于上方数字相同的内容
在这里插入图片描述

if(POLICY CMP0146) 
cmake_policy(SET CMP0146 OLD) 
endif()if(POLICY CMP0148) 
cmake_policy(SET CMP0148 OLD) 
endif()

点击configuration就可以消除这些报错。这类报错如果不去掉的话后期编译代码的时候会报错。

在使用vs2022编译的时候报了一个转换类型的错误
在这里插入图片描述这里的解决方式是找到代码的位置然后增加

static_cast<T>

进行类型转化可以解决,搜了一下原因,可能与cuda的新旧版本有关,适用于cuda12.1和cuda12.2,这里原本可能存在一个隐式转换函数,但是新版本没有了,所以编译的时候会有问题。

之后进行正常的all_build和install就可以正常使用,先build,然后仅用于install得到install文件夹,其中包含所需要的dll等内容

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wpf devexpress Property Grid创建属性定义

WPF Property Grid控件使用属性定义定义如何做和显示 本教程示范如何绑定WP Property Grid控件到数据和创建属性定义。 执行如下步骤 第一步-创建属性定义 添加PropertyGridControl组件到项目。 打开工具箱在vs&#xff0c;定位到DX.23.1: Data 面板&#xff0c;选择Prope…

亚马逊云科技AI创新应用下的托管在AWS上的数据可视化工具—— Amazon QuickSight

目录 Amazon QuickSight简介 Amazon QuickSight的独特之处 Amazon QuickSight注册 Amazon QuickSight使用 Redshift和Amazon QuickSightt平台构建数据可视化应用程序 构建数据仓库 数据可视化 Amazon QuickSight简介 亚马逊QuickSight是一项可用于交付的云级商业智能 (BI…

Docker在Centos7下的安装

1、卸载旧版本 执行如下指令对旧版本进行卸载&#xff1a; sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 执行完毕后&#xff0c;如果输入docker version发现do…

js计算某个时间距离现在有几年几月几日几分几秒之前的方法

数据类型 使用js时间戳 console.log(Date.now()) //1642471441587 或者转化为时间戳才能使用 Date.parse(“2022/1/18 10:05”) //1642471500000 将时间戳转化成时间格式的方法如下–链接查看 https://mp.weixin.qq.com/s?__bizMjM5MDA2MTI1MA&mid2649121025&idx2&am…

android studio导入eclipse项目

网上下载一个老工程&#xff0c;.project文件里有eclipse。 android studio导入eclipse项目 eclipse项目结构 Android studio文件结构 下面是导入步骤&#xff1a; 第一步&#xff0c;打开一个项目。 选择File->New->Import Project 第二步&#xff0c;选择Eclipse项目根…

NX二次开发UF_CAM_ask_doc_template_name 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;里海NX二次开发3000例专栏 UF_CAM_ask_doc_template_name Defined in: uf_cam.h int UF_CAM_ask_doc_template_name(const char * * doc_template_filename ) overview 概述 This function provides the name of the file th…

Linux mmap 的作用是什么?

文章目录 1.简介2.相关函数3.mmap和常规文件操作的区别4.作用参考文献 1.简介 mmap&#xff08;memory map&#xff09;即内存映射&#xff0c;用于将一个文件或其它对象映射到进程的地址空间。 2.相关函数 创建映射函数&#xff1a; #include <sys/mman.h>void *mm…

浅谈 JVM GC 收集器--系列(一)

又到一年大促时刻&#xff0c;今天我们一起探讨下JVM垃圾回收的问题&#xff0c;写代码的时候想一想如何减少FullGC问题的出现&#xff0c;因为一旦出现频繁FullGC&#xff0c;短时间内没有太好的解决办法&#xff0c;很有可能重启后服务接着FullGC&#xff0c;导致服务可用率降…

【运维篇】Redis常见运维命令详解

文章目录 1. 前言2. 连接管理命令详解2.1 AUTH命令2.2 PING命令2.3 SELECT命令2.4 QUIT命令 3. 服务器管理命令详解3.1 FLUSHALL命令3.2 SAVE/BGSAVE命令3.3 SHUTDOWN命令 4. 安全管理命令详解4.1 CONFIG命令4.1.1 CONFIG SET命令用法4.1.2 CONFIG GET命令用法 4.2 AUTH命令 5.…

海外代理IP如何找到靠谱的?

现在市面上有很多代理服务商&#xff0c;大家可以根据自己的需求选择一个适合自己业务的的IP代理服务商&#xff0c;现在也有一些免费的&#xff0c;但如果力求稳定安全&#xff0c;还是选择付费的。 这里提醒一句&#xff0c;在买代理IP时最好找这种可以免费试用的&#xff0…

kernel32.dll丢失都有什么解决办法,帮助大家解决kernel32.dll丢失的问题

kernel32.dll丢失是电脑中常出现的情况&#xff0c;今天就想和大脚聊聊这个kernel32.dll 文件&#xff0c;这个文件它的功能是干什么的&#xff0c;如果电脑中kernel32.dll 丢失都有什么解决办法&#xff0c;帮助大家解决kernel32.dll丢失的问题&#xff0c;本篇文章给大家提供…

鸿蒙:Harmony开发基础知识详解

一.概述 工欲善其事&#xff0c;必先利其器。 上一篇博文实现了一个"Hello Harmony"的Demo&#xff0c;今天这篇博文就以"Hello Harmony" 为例&#xff0c;以官网开发文档为依据&#xff0c;从鸿蒙开发主要的几个方面入手&#xff0c;详细了解一下鸿蒙开…

MIUI查看当前手机电池容量

MIUI查看当前手机电池容量 1. 按如下步骤操作生成bug报告 2. 按如下操作解压bug报告 Last learned battery capacity

分布式服务与分布式框架

分布式副武其实就是根据某个粒度&#xff0c;将服务拆分&#xff0c;而分布式框架就是将这些服务协调&#xff0c;管理起来。分布式框架&#xff0c;我认为服务调用是他的基础能力&#xff0c;该能力是所有分布式框架的基础能力&#xff0c;其次是服务注册与发现。 在这个维度…

TCP与UDP协议

TCP与UDP协议 1、TCP协议&#xff1a; 1、TCP特性&#xff1a; TCP 提供一种面向连接的、可靠的字节流服务。在一个 TCP 连接中&#xff0c;仅有两方进行彼此通信。广播和多播不能用于 TCP。TCP 使用校验和&#xff0c;确认和重传机制来保证可靠传输。TCP 给数据分节进行排序…

[C++]:8.C++ STL引入+string(介绍)

C STL引入string(介绍&#xff09; 一.STL引入&#xff1a;1.什么是STL2.什么是STL的版本&#xff1a;2-1&#xff1a;原始版本&#xff1a;2-2&#xff1a;P. J 版本&#xff1a;2-3&#xff1a;RW 版本&#xff1a;2-4&#xff1a;SGL版本&#xff1a; 3.STL 的六大组件&…

WhatsApp新营销全解:如何才能真正留住你的客户

WhatsApp营销这件事上&#xff0c;从获取线索、留存客户、成交转化到复购推荐的整个流程中&#xff0c;方方面面的因素影响着最终的转化效果。今天开始&#xff0c;我们会在公众号内新增WhatsApp新营销全解系列&#xff0c;结合前人踩过的坑和成功经验&#xff0c;来为大家说说…

读《Segment Anything in Defect Detection》

摘要 (好像只是说把SAM应用到了红外缺陷分割领域) 引言 无损检测得到红外图像&#xff0c;根据热能观察异常 贡献&#xff1a; •从两个光学脉冲热成像系统构建广泛的缺陷热数据库&#xff0c;包括各种材料并释放它们。 • 开发DefectSAM&#xff0c;这是第一个用于缺陷检测…

Android 解决CameraView叠加2个以上滤镜拍照黑屏的BUG (二)

1. 前言 这段时间&#xff0c;在使用 natario1/CameraView 来实现带滤镜的预览、拍照、录像功能。 由于CameraView封装的比较到位&#xff0c;在项目前期&#xff0c;的确为我们节省了不少时间。 但随着项目持续深入&#xff0c;对于CameraView的使用进入深水区&#xff0c;逐…

Semi-Supervised Multi-Modal Learning with Balanced Spectral Decomposition

Y是所有模态的表征矩阵&#xff0c; ∑ i 1 d h ( λ i ) \sum_{i1}^dh(\lambda_i) ∑i1d​h(λi​) is the proposed eigenvalue-based objective function,the final similarity matrix W for the multimodal data as a block matrix 辅助信息 作者未提供代码