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 - OpenCV
https://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=YOidIl2kTD0
https://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=YOidIl2kTD0
https://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() }...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
结合PDE反应扩散方程与物理信息神经网络(PINN)进行稀疏数据预测的技术方案
以下是一个结合PDE反应扩散方程与物理信息神经网络(PINN)进行稀疏数据预测的技术方案,包含完整数学推导、PyTorch/TensorFlow双框架实现代码及对比实验分析。 基于PINN的反应扩散方程稀疏数据预测与大规模数据泛化能力研究 1. 问题定义与数学模型 1.1 反应扩散方程 考虑标…...
JavaScript性能优化实战大纲
性能优化的核心目标 降低页面加载时间,减少内存占用,提高代码执行效率,确保流畅的用户体验。 代码层面的优化 减少全局变量使用,避免内存泄漏 // 不好的实践 var globalVar I am global;// 好的实践 (function() {var localV…...
