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,一经查实,立即删除!

相关文章

【华为OD机试】分苹果【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 A、B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果, 他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100 + 0101 = 9), B的计算规则是十进制加法,包括正常进位,…

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

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

tcpdump使用方法

目录 安装 tcpdump 使用基本命令 示例 1. 捕获所有流量 2. 指定网络接口 3. 保存到文件 4. 显示包的详细信息 5. 过滤特定主机 6. 过滤特定端口 7. 组合过滤条件 更多选项和过滤表达式 tcpdump 是一个用于在命令行中进行网络抓包的工具&#xff0c;它允许你捕获和分…

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

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

nginx学习(4)Nginx 负载均衡

负载均衡&#xff1a;是将负载分摊到不同的服务单元&#xff0c;既保证服务的可用性&#xff0c;又保证响应 足够快&#xff0c;给用户很好的体验。 在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服 务&#xff0c; 而且 Nginx 提供了几种分配方式(策略)&#…

rust打印闭包的插件实现

背景 “调试”编译器的某些行为时,可以通过编译器错误输出来判断 比如想知道一个类型是否实现了某个trait fn main() {use std::fmt::Debug;struct A;fn foo<T: Debug>(t: T) {}let a = A;foo(A); }提示:required by this bound in foo 意思就是:结构体A没有实现Deb…

ES6有何新特性?(下篇)

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

ES索引数据清理脚本示例

说明&#xff1a;我得索引是按月份创建的&#xff0c;索引名后面都有yyyy.MM 需求&#xff1a;删除三个月以前的索引&#xff0c;清理收集的应用日志数据&#xff0c;释放磁盘空间 #!/bin/bash# 定义 Elasticsearch 节点的地址 ELASTICSEARCH_HOST"192.168.53.100" …

虚拟化逻辑架构: 创建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;…

BeansTalkd 做消息队列服务

无意间看到这个仓库讲php关于 BeanStalkd 的扩展&#xff0c;然后就去了解了一下beanstalkd&#xff0c;用它可以用来做队列服务。 话不多说&#xff0c;安装一下试试。 首先 sudo apt search beanstalk 搜索一下发现 Sorting... Done Full Text Search... Done awscli/focal…

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"&…

C语言十六弹 --求两个整数二进制位不同的位数

求两个整数二进制位不同的位数 思路&#xff1a;1.要求不同的个数 就必须遍历比较两个数的二进制位&#xff0c;不同就使用一个三方变量接收&#xff0c;相同则跳过。 2.使用一个相同的三方变量来作为两者判断条件的基础&#xff0c;而考虑到需要遍历二进制位 则使用1来作为三…

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的管…