在Unity的OpenCV(EMGUCV包装)的整合(OpenCV (EMGUCV wrapper)

2019-09-04 02:02发布

正如你所知道的OpenCV是让你做计算机视觉惊人的,强大的东西非常有用的库。 所以,我通过一个很好的时间弄清楚如何使用它在Unity3d,我有很多的问题,并在网络搜索,我发现了几个建议,但没有一个为我工作。

  • 我使用的是Unity Pro的4.0
  • 这个版本Emgu简历(emgucv窗口的通用GPU的2.4.9.1847)
  • 我对团结项目的目标是:窗口,而不是网页播放器

Answer 1:

这是我做大家谁想要使用它:

  1. 安装此版本EmguCV,它用C创建一个文件夹EMGU:
  2. 在此文件夹中,你将有一个名为单个文件夹“emgucv窗口的通用GPU的2.4.9.1847”
  3. 进入“bin文件夹”
  4. 从“bin文件夹”,你需要复制的x86文件夹中所有的DLL(动态链接库22),以及那些直接在箱(12个dll文件:Emgu.CV,Emgu.CV.UI ...)。 对于X64的目标,你可以尝试同样的事情,我认为这将通过从x64文件夹取的dll工作。
  5. 创建一个名为插件,在您的统一项目文件夹(资产 - >插件)
  6. 在Plugins文件夹中粘贴所有这些dll的34文件
  7. 从这34个dll文件,复制“npp32_50_35”和“cudart32_50_35”到统一编辑器文件夹,在我的情况下,它的“C:\ Program Files文件(x86)的\团结\编辑器”
  8. 您对这些DLL的东西做。

这是怎么进行测试:

  1. 创建一个小脚本,接受一个“picture1.jpg”和第200个像素颜色的颜色更改为白色(255,255,255),然后保存新的“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"); 
  2. 通过添加不同的dll中,他们会自动在单编辑器中引用的Plugins文件夹,但很可能你将有“System.Drawing中”库中的问题,所以不要忘记using System.Drawing ; 而且你必须要去你的脚本编辑器来引用它。

    如果MonoDevelop的-团结,去解决方案管理器的左,上Refrences->编辑右键点击引用 - >并搜索在左栏System.Drawing中,并检查它,看它在右栏中,然后按确定

  3. 也不要忘记在Unity->文件 - >建立这样的设置更改构建设置:

    • PC Mac和Linux,而不是Web播放器
    • 目标=窗口
    • 建筑= 86
    • 然后按下“播放器设置按钮”转到“新画面中的其他设置”,并设置API兼容性lavel到.NET 2.0,而不是NET 2.0子集

现在你可以自由地测试你的脚本,并用做OpenCV的真棒工作

PS:我不知道到底为什么在“npp32_50_35”和“cudart32_50_35”必须在编辑器文件夹中,但它只是为我工作的情况。



文章来源: OpenCV (EMGUCV wrapper) integration in Unity