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.mzph.cn/news/152455.shtml

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

相关文章

听GPT 讲Rust源代码--src/bootstrap

图片来自 使用rust的image库进行图片压缩[1] File: rust/src/bootstrap/build.rs 在Rust源代码中&#xff0c;rust/src/bootstrap/build.rs这个文件是一个构建脚本。构建脚本是一个在编译Rust编译器本身时运行的程序&#xff0c;它用于初始化和配置Rust编译器的构建过程。build…

基于SSM的焦作旅游协会管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

ES6有何新特性?(下篇)

目录 函数参数的默认值设置 rest参数 扩展运算符 Symbol 迭代器 生成器 Promise Class 数值扩展 对象方法扩展 模块化 大家好呀&#xff01;今天这篇文章继续为大家介绍ES6的新特性&#xff0c;上上上篇文章介绍了一部分&#xff0c;这篇文章会将剩下的部分新增的特…

虚拟化逻辑架构: 创建KVM中的VM与实现VNC远程登录

目录 一、实验 1.安装KVM环境管理工具并创建VM&#xff08;虚拟机&#xff09; 2.Windows使用VNC Viewer连接KVM中的VM&#xff08;虚拟机&#xff09; 二、问题 1.如何下载安装VNC Viewer 一、实验 1.安装KVM环境管理工具并创建VM&#xff08;虚拟机&#xff09; (1) 采…

德迅云安全和您聊聊关于DDOS高防ip的一些方面

德迅DDoS防护服务是以省骨干网的DDoS防护网络为基础&#xff0c;结合德迅自研的DDoS攻击检测和智能防护体系&#xff0c;向您提供可管理的DDoS防护服务&#xff0c;自动快速的缓解网络攻击对业务造成的延迟增加&#xff0c;访问受限&#xff0c;业务中断等影响&#xff0c;从而…

代码随想录算法训练营第二十九天| 491 递增子序列 46 全排列

目录 491 递增子序列 46 全排列 491 递增子序列 在dfs中进行判断&#xff0c;如果path的长度大于1&#xff0c;则将其添加到res中。 本题nums中的元素的值处于-100与100之间&#xff0c;可以将元素映射0到199之间并且通过布尔数组st来记录此层中元素是否被使用过&#xff0c;…

C练习题_14

一、单项选择题&#xff08;本大题共 20小题&#xff0c;每小题 2分&#xff0c;共 40分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案&#xff0c;并将所选项前的字母填写在答题纸的相应位置上。) 以下叙述不正确的是&#xff08;&#xff09; A.一个C源程序可…

高版本Vivado和Linux 4.x内核移植Digilent Driver

移植环境 Vivado 2022.2Ubuntu 22.04petalinux 2022.2Linux内核4.14&#xff08;xilinx-linux-2018.3&#xff09;linux-digilent 主要问题 https://github.com/Digilent/linux-digilent 这些驱动支持Linux kernel release 4.x&#xff0c;然而和Vitis 2022.2 套件对应的内核…

buildadmin+tp8表格操作(8) 表格下方添加 合计行

表格的下方可以自定义添加一个合计行&#xff0c;如果有其它的需求&#xff0c; 我们可以添加我们自已需要的行&#xff0c; 并不局限于合计行 以上就可以给表格的最下方添加一个合计行了 完整代码如下 <template><div class"default-main ba-table-box"&…

AVL树你需要了解一下

AVL树介绍 AVL树是一种自平衡二叉查找树&#xff0c;它得名于发明者G.M.Adel’son-Vel’skii和E.M.Landis。AVL树的特点是任何节点的两个子树的高度最大差别为1&#xff0c;因此它也被称为高度平衡树。在AVL树中&#xff0c;每个节点的平衡因子只有-1、0、1三种&#xff0c;通…

人工智能给我们的生活带来了巨大的影响?

1. 人工智能从哪些方面给我们带来了影响&#xff1f; 人工智能出现&#xff0c;极大地影响了人类的生活&#xff0c;下面是人工智能所影响的领域&#xff1a; 1. 日常生活 智能家居: AI驱动的设备&#xff0c;如智能扬声器、灯光、恒温器&#xff0c;正在改变我们与家居环境的…

【鸿蒙最新全套教程】<HarmonyOS第一课>1、运行Hello World

下载与安装DevEco Studio 在HarmonyOS应用开发学习之前&#xff0c;需要进行一些准备工作&#xff0c;首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio下载官网&#xff0c;单击“立即下载”进入下载页面。 DevEco Studio提供了Windows版本和…

文件上传漏洞(CVE-2022-23043)

简介 CVE-2022-23043是一个与Zenario CMS 9.2文件上传漏洞相关的安全漏洞。该漏洞被定义为文件的不加限制上传&#xff0c;攻击者可以利用这个漏洞上传webshell以执行任意命令。利用这个漏洞的攻击者暂无特定情况。要利用此漏洞&#xff0c;攻击者首先需要访问Zenario CMS的管…

Django 路由配置(二)

一、路由 就是根据用户请求的URL链接来判断对应的出来程序&#xff0c;并返回处理结果&#xff0c;也是就是URL和django的视图建立映射关系. 二、Django请求页面的步骤 1、首先Django确定要使用的根URLconf模块&#xff0c;通过ROOT_URLCONF来设置&#xff0c;在settings.py配置…

服务器数据恢复—OCFS2下raid5磁盘损坏导致阵列崩溃的数据恢复案例

服务器数据恢复环境&#xff1a; IBM某型号存储&#xff0c;6块sas硬盘组建一组raid5&#xff0c;划分一个lun分配给Linux服务器并格式化为OCFS2文件系统&#xff0c;共享给虚拟化使用&#xff0c;存放的数据包括24台liunx和windows虚拟机、压缩包文件和配置文件。 服务器故障…

学习笔记6——垃圾回收

学习笔记系列开头惯例发布一些寻亲消息 链接&#xff1a;https://baobeihuijia.com/bbhj/contents/3/190801.html java垃圾回收&#xff08;stop the world&#xff09; 专注于堆和方法区的垃圾回收&#xff0c;年轻代&#xff0c;老年代&#xff0c;永久代判断对象是否还存…

Java8Stream快速使用

将List集合存入流中 List<String> list new ArrayList<>();list.add("张一");list.add("张二");list.add("张三");list.add("李四");list.add("赵五");list.add("张六");list.add("王八"…

Linux进程通信——IPC、管道、FIFO的引入

进程间的通信——IPC 进程间通信 (IPC&#xff0c;InterProcess Communication) 是指在不同进程之间传播或交换信息。 IPC的方式通常有管道 (包括无名管道和命名管道) 、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。 …

pyQt主界面与子界面切换简易框架

本篇来介绍使用python中是Qt功能包&#xff0c;设置一个简易的多界面切换框架&#xff0c;实现主界面和多个子界面直接的切换显示。 1 主界面 设计的Demo主界面如下&#xff0c;主界面上有两个按钮图标&#xff0c;点击即可切换到对应的功能界面中&#xff0c;进入子界面后&a…

【mediasoup】TransportCongestionControlClient 1: 代码走读

TransportCongestionControlClient 基于m77版本的libwebrtc ,但是TransportCongestionControlClient 并不是libwebrt中的,是mediasoup自己封装实现:TransportCongestionControlClient 用于发送端D:\XTRANS\soup\mediasoup-sfu-cpp\worker\src\RTC\TransportCongestionContro…