Unity中的OpenCV(EMGUCV包装器)集成
正如你们所知道的,OpenCV是一个非常有用的库,它可以让你们在计算机视觉中做出惊人的、强大的事情。所以我花了很长时间研究如何在Unity3d中使用它,我遇到了很多问题,在网上搜索,我找到了一些建议,但没有一个对我有效Unity中的OpenCV(EMGUCV包装器)集成,opencv,unity3d,emgucv,opencvsharp,Opencv,Unity3d,Emgucv,Opencvsharp,正如你们所知道的,OpenCV是一个非常有用的库,它可以让你们在计算机视觉中做出惊人的、强大的事情。所以我花了很长时间研究如何在Unity3d中使用它,我遇到了很多问题,在网上搜索,我找到了一些建议,但没有一个对我有效 我使用的是Unity Pro 4.0 此版本的Emgu CV(emgucv windows通用gpu 2.4.9.1847) 我的unity项目目标是:windows而不是web player 这就是我为每个想使用它的人所做的: 安装此版本的EmguCV,它将在C中创建一个文件
- 我使用的是Unity Pro 4.0
- 此版本的Emgu CV(emgucv windows通用gpu 2.4.9.1847)
- 我的unity项目目标是:windows而不是web player
- 安装此版本的EmguCV,它将在C中创建一个文件夹EMGU:
- 在此文件夹中,您将有一个名为“emgucv windows universal gpu 2.4.9.1847”的文件夹
- 转到“bin文件夹”
- 从“bin文件夹”中,您需要复制x86文件夹中的所有DLL(22个DLL),以及直接复制bin中的DLL(12个DLL:Emgu.CV、Emgu.CV.UI…)。对于X64目标,您可以尝试同样的方法,我认为这将通过从X64文件夹获取DLL来实现
- 在Unity项目中创建一个名为Plugins的文件夹(资产->插件)
- 将所有这些34个DLL文件粘贴到Plugins文件夹中
- 从这34个dll文件中,将“npp32_50_35”和“cudart32_50_35”复制到Unity editor文件夹中,在我的示例中是“C:\Program files(x86)\Unity\editor”
- 你已经完成了DLL的工作 这是如何测试它的:
- 创建一个小脚本,该脚本采用“picture1.jpg”,并将前200个对角线像素的颜色更改为白色(255255255),然后保存新的“picture2.jpg”。这是您必须在脚本中添加的内容:
using UnityEngine; using System.Collections; using Emgu.CV; using Emgu.CV.Util; using Emgu.CV.UI; using Emgu.CV.CvEnum; using Emgu.CV.Structure; using System.Runtime.InteropServices; using System; using System.Drawing; Image<Bgr, byte> picture = new Image<Bgr, byte>("C:\\picture1.jpg"); Bgr myWhiteColor = new Bgr(255, 255, 255); For (int i=0; i<200; i++) {picture[i,i]= color;} picture.Save("C:\\picture2.jpg");
使用UnityEngine; 使用系统集合; 使用Emgu.CV; 使用Emgu.CV.Util; 使用Emgu.CV.UI; 使用Emgu.CV.CvEnum; 使用Emgu.CV.Structure; 使用System.Runtime.InteropServices; 使用制度; 使用系统图; 图片=新图片(“C:\\picture1.jpg”); Bgr myWhiteColor=新的Bgr(255、255、255); 对于(int i=0;iEdit references->并在左列中搜索system.drawing并选中它以在右列中查看,然后按ok
- 另外,不要忘记在Unity->file->build settings中以以下方式更改生成设置:
- PC Mac和Linux代替网络播放器
- 目标=窗口
- 架构=x86
- 然后按下“播放器设置按钮”转到“新屏幕中的其他设置”,并将Api兼容性设置为.NET 2.0,而不是.NET 2.0
现在,您可以自由地测试您的脚本,并使用OpenCV进行出色的工作
- 这就是我为每个想使用它的人所做的:
PS:我不知道为什么“npp32_50_35”和“cudart32_50_35”必须在编辑器文件夹中,但这是唯一对我有效的情况。看起来你回答了你自己的问题,这是一件好事。但是你应该把问题和答案分开,把答案写在“你的答案”中编辑页面底部的框,然后您甚至可以“接受”您自己的答案。(发布此问题,以便问题显示为已回答。如果OP再次将其作为答案发布,我很乐意删除此问题)未处理的异常:System.Reflection.ReflectionTypeLoadException:无法加载模块中的类。我发现此错误