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

UE5+OpenCV配置(Windows11系统)

一、概述

        因为需要在UE5中使用OpenCV这些工具进行配置,所以在网络上参考借鉴一些资料进行配置。查询到不少的资料,最后将其配置成功。在这里顺便记录一下自己的配置成功的过程。

二、具体过程

(一)版本

        使用Windows11系统、UE5.3,使用vscode进行操作(vscode和visual studio两者原理其实是一样的,使用哪个都可以),我这里使用vscode作为我的编辑器了。

        OpenCV选择的是官方网站的4.10版本。网络上也有关于UE中OpenCV插件的安装,但是我没有尝试,这里主要是关于代码的安装测试。

(二)OpenCV版本选择

        因为是使用Windows系统进行配置的,所以我这里直接在官方网站上选择Windows版本的OpenCV进行下载,这个已经编译完成,可以直接使用。也可以下载源代码在Windows系统上使用CMake进行编译,要求技术比较高,已经有别人编译完成能够使用的,我们选择这个。

Releases - OpenCVicon-default.png?t=N7T8https://opencv.org/releases/

        下载完成后,运行exe程序,将OpenCV代码提取出来,此时提取出来的路径可以随便书写,解压后如图所示。

 (三)UE5项目配置过程

        1.OpenCV文件夹建立

        首先我们要新建一个UE5的项目,选择C++,这里我的项目名称是test2,如图所示。这里我们新建立一个ThirdParty的文件夹用以存放第三方库,这个文件夹的位置在哪里对整体的影响不大。

        如图所示。在ThirdParty文件夹中专门为OpenCV单独建立一个文件夹,因为可以日后还需要增加别的第三方库,这里可以更好的区分。

        

        在opencv文件夹内,如图所示,需要我们建立这三个文件夹,分别是bin,include,lib。(主要是lib和include,bin这个文件夹实际没有怎么用到它)。

         打开刚才从官方网站解压提取出来的OpenCV文件夹,如图所示,打开build文件夹。

        将build文件夹中的include目录下面的内容,整体复制到ThirdParty/opencv下面,如图所示。

         

         如图所示,接下来,打开build文件夹里面的x64位,选择vc16(根据自己版本来选择)里面中的bin和lib两个文件夹下的内容,分别复制到ThirdParty/opencv下面bin和lib目录下面。        

        2.项目文件修改test2.Build.cs 

        test2.Build.cs是指你建立的项目名称YourProjectName.Build.cs,位于source文件夹下面。

        打开这个文件。在里面添加下如下代码。OpenCVPath是指自己的OpenCV路径,这里我使用的是绝对路径,缺点是,我新建立一个项目每次又要修改,也有别的写法。

string OpenCVPath = "D:/scholar/UE5/TEST/test2/ThirdParty/opencv";
// Add OpenCV include path
PublicIncludePaths.Add(Path.Combine(OpenCVPath, "include"));// Add OpenCV library path using PublicSystemLibraryPaths
PublicSystemLibraryPaths.Add(Path.Combine(OpenCVPath, "lib"));// Add OpenCV library file
PublicAdditionalLibraries.Add(Path.Combine(OpenCVPath, "lib", "opencv_world4100.lib"));

        需要注意在文件开头引用这个。

using System;

         不引用的话,系统无法识别Path,会报错。

         这里主要将include中的头文件和动态链接库进行添加。

        3.编译报错解决——UE5和OpenCV中check()函数冲突

        将test2.Build.cs文件修改完成后,进行编译生成,发现报错。主要问题出在opencv/core/utility.hpp这个文件下面。

        文件中报错的具体位置,如图中红色部分圈出所示。

         出现报错的原因是,经过查询后,在YouTube的一个视频(视频链接放在下面,视频是讲述如何在UE4中配置OpenCV的,跟UE5配置流程差不多)中,他给出的解释是,UE里面也定义了check函数,OpenCV里面也有这个函数,两者的命令冲突了,所以报错发生了。
https://www.youtube.com/watch?v=YOidIl2kTD0icon-default.png?t=N7T8https://www.youtube.com/watch?v=YOidIl2kTD0

         这里的解决方法是将OpenCV中check函数进行修改,将其名称改为cv_check()即可通过编译。如图所示。首先第一步将utility.cpp中关于check的if 定义的语句注释掉,如图所示。

        第二步,按下ctrl+F进行check()的查找。将其更改为cv_check(),如图所示 

        完成操作后,重新编译,引用头文件时候,不会发生报错。

        4.自动补全的实现

        做完上述步骤之后,在代码编译后,不会发生报错,但是自己编写代码的时候没有出现相应的自动补全提示。这里我们的解决方式是。在所建立项目中Binaries/Win64文件夹下面,添加几个dll文件。

 

         如图所示。这几个动态链接库的文件名称如下所示。

        5.补充说明

        假如在 Binaries/Win64下面添加dll文件后,依旧无法出现代码补全提示的话,在UE5中打开这个项目,将重新生成这个项目即可。

三、参考链接

        跟里面有些地方有差异,关于报错部分进行的解决部分和代码自动补全进行添加和补充。UE5_OpenCV库的加载方式_ue opencv-CSDN博客文章浏览阅读1.3k次。UE5中OpenCV库的加载_ue opencvhttps://blog.csdn.net/weixin_42318094/article/details/132946767        YouTube视频链接,根据这个视频的操作进行的。将全部check()函数报错的地方都要进行修改。

https://www.youtube.com/watch?v=YOidIl2kTD0icon-default.png?t=N7T8https://www.youtube.com/watch?v=YOidIl2kTD0           

相关文章:

UE5+OpenCV配置(Windows11系统)

一、概述 因为需要在UE5中使用OpenCV这些工具进行配置,所以在网络上参考借鉴一些资料进行配置。查询到不少的资料,最后将其配置成功。在这里顺便记录一下自己的配置成功的过程。 二、具体过程 (一)版本 使用Windows11系统、UE5.…...

自研Vue3开源Tree组件:节点拖拽bug修复

当dropType为after,且dropNode为父节点时,bug出现了: bug原因:插入扁平化列表的位置insertIndex计算的不对: 正确的逻辑,同inner要算上子孙节点所占的位置: bug修复!...

SSM学习9:SpringBoot简介、创建项目、配置文件、多环节配置

简介 SpringBoot式用来简化Spring应用的初始搭建以及开发过程的一个框架 项目搭建 File -> New -> Project 选中pom.xml文件,设置为maven项目 项目启动成功 可以访问BasicController中的路径 配置文件 在resources目录下 application.properties 默…...

Java面试题---索引

什么是索引 索引是用来高效获取数据的存储结构如同字典的目录一样,数据库的索引通常使用btree来实现,索引树的节点和数据地址相关联,查询的时候在索引树种进行高效搜索,然后根据数据地址获取数据。索引提高了搜索的效率同时增加了…...

ollama本地部署大语言模型记录

目录 安装Ollama更改模型存放位置 拉取模型GemmaMistralQwen1.5(通义千问)codellama 部署Open webui测试性能知识广度问题1问题2 代码能力总结 最近突然对大语言模型感兴趣 同时在平时的一些线下断网的CTF比赛中,大语言模型也可以作为一个能对话交互的高级知识检索…...

【C++红黑树应用】模拟实现STL中的map与set

目录 🚀 前言一: 🔥 红黑树的修改二: 🔥 红黑树的迭代器 三: 🔥 perator() 与 operator--() 四: 🔥 红黑树相关接口的改造✨ 4.1 Find 函数的改造✨ 4.2 Insert 函数的改…...

前端实习手计(5):班味十足?!

自我感觉没有班味!!!每天还是快快乐乐上班哇,是愉快的一周~这周没有太多活咯,基本就是修修改改改代码学习。真的感觉自己写的代码就是乱七八糟,只要能跑起来有效果就行(我不是合格的处女座哈哈哈…...

Duix AI 太上瘾,让我熬夜体验的AI女友

✨点击这里✨:🚀原文链接:(更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号!) Duix AI 太上瘾,让我熬夜体验的AI女友 开启 Duix AI 女友的奇妙之旅_ Hi,这…...

php判断某个目录下是否存在文件

/*** 判断字符串是否以什么结尾* param String $haystack 字符串* param String $needle 结尾* return Boolean*/ function endWith($haystack, $needle) {$length strlen($needle);if ($length 0) {return true;}return (substr($haystack, -$length) $needle); } /***…...

重塑互联网生态:探索Web 3.0、大数据与隐私保护的新篇章

引言:互联网的新纪元 随着互联网技术的日新月异,我们正迈入一个全新的时代,其中Web 3.0、大数据以及隐私保护成为塑造未来互联网生态的三大核心力量。它们不仅改变了我们与互联网交互的方式,更深刻地影响着社会的方方面面。 Web…...

HR模块中PA信息类型的相关函数

目录 1、新增、删除,修改:HR_INFOTYPE_OPERATION新增:INS删除:DEL修改:MOD 2、读取PA信息类型:HR_READ_INFOTYPE3、入职,生成新工号用:HR_PAD_HIRE_EMPLOYEE4、加锁:BAPI…...

c# 日期类型变量默认值

DateTime类型是比较常用的变量类型,但是以前处理都比较业余,下面总结2中常用方式 这次把它总结下: DateTime t1 default(DateTime); DateTime t2 DateTime.MinValue; 这样t1,t2 的值都是 {0001/1/1 0:00:00} PS: 由于DateTi…...

设计模式实战:任务调度系统的设计与实现

问题描述 设计一个任务调度系统,支持任务的创建、调度、执行和状态管理。系统需要确保任务的执行过程可以被灵活调度,并且支持任务状态的跟踪和通知功能。 设计分析 命令模式 命令模式用于将请求封装成对象,从而使我们可以用不同的请求、队列或日志来参数化其他对象。任…...

代码中的特殊注释

代码中特殊注释——TODO、FIXME、XXX、HACK_fix me todo hack-CSDN博客 代码中特殊注释——TODO、FIXME、XXX、HACK TODO:英语翻译为待办事项,备忘录。如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会…...

ubuntu20.04.6 安装Skywalking 10.0.1

1.前置准备 1.1. **jdk17(Skywalking10 jdk22不兼容,用17版本即可)**安装: https://blog.csdn.net/CsethCRM/article/details/140768670 1.2. elasticsearch安装: https://blog.csdn.net/CsethCRM/article/details…...

C++:map和set

hello,各位小伙伴,本篇文章跟大家一起学习《C:map和set》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 如果本篇文章对你有帮助,还请各位点点赞!!…...

深入理解二叉搜索树:定义、操作及平衡二叉树

引言 二叉搜索树(Binary Search Tree,BST)是一种特殊的二叉树结构,每个节点的左子树节点值小于根节点值,而右子树节点值大于根节点值。二叉搜索树在计算机科学中有着广泛的应用,尤其在动态查找表和优先队列…...

vue3组件通信(二)

组件通信 一.$attrs(祖>孙间接)二、$refs()父>子, $parent()子>父三.provide,inject(祖>孙直接)四.pinia五.slot1.默认插槽2.具名插槽3.作用域插槽 一.$attrs(祖>孙间接) $attrs用于实现当前组件的父组…...

关键词查找【Boyer-Moore 算法】

1、【Boyer-Moore 算法】 【算法】哪种算法有分数复杂度?- BoyerMoore字符串匹配_哔哩哔哩_bilibili BM算法的精华就在于BM(text, pattern),也就是BM算法当不匹配的时候一次性可以跳过不止一个字符。即它不需要对被搜索的字符串中的字符进行逐一比较,而…...

【前端手写代码】手写Object.create

思路:将传入的对象作为原型 // 思路:将传入的对象作为原型 function create(obj) {function F() { }F.prototype objreturn new F() }...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

2025季度云服务器排行榜

在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...