Unity中的OpenCV(EMGUCV包装器)集成

时间:2013-05-17 15:14:31

标签: opencv unity3d emgucv opencvsharp

如您所知,OpenCV是一个非常有用的库,可以让您在计算机视觉中做出惊人而强大的功能。所以我度过了一个很好的时间来弄清楚如何在Unity3d中使用它,我遇到了很多问题,并且在网上搜索,我找到了一些建议但没有一个适合我。

  • 我使用的是Unity Pro 4.0
  • 此版本的Emgu CV(emgucv-windows-universal-gpu 2.4.9.1847)
  • 我对团结项目的目标是:windows而不是web player

1 个答案:

答案 0 :(得分:5)

这是我为每个想要使用它的人所做的:

  1. 安装此版本的EmguCV,它在C:
  2. 中创建一个文件夹EMGU
  3. 在此文件夹中,您将拥有一个名为“emgucv-windows-universal-gpu 2.4.9.1847”的文件夹
  4. 转到“bin文件夹”
  5. 从“bin文件夹”中你需要复制x86文件夹中的所有dll(22个dll),以及bin中直接复制的那些dll(12个dll:Emgu.CV,Emgu.CV.UI ...)。对于X64目标,您可以尝试相同的操作,我认为这可以通过从X64文件夹中获取dll来实现。
  6. 在Unity项目中创建一个名为Plugins的文件夹(Assets-> Plugins)
  7. 将所有这34个dll文件粘贴到Plugins文件夹中
  8. 从这34个dll文件中,将“npp32_50_35”和“cudart32_50_35”复制到Unity编辑器文件夹中,在我的情况下,它是“C:\ Program Files(x86)\ Unity \ Editor”
  9. 你完成了Dlls的工作。
  10. 这是测试它的方法:

    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. 通过在Plugins文件夹中添加不同的dll,它们将在Mono Editor中自动引用,但是你可能会遇到“System.Drawing”库的问题,所以不要忘记using System.Drawing ;并且您还必须通过转到脚本编辑器来引用它。

      如果是MonoDevelop-Unity,请转到左侧的解决方案资源管理器,右键单击Refrences-&gt;编辑参考 - &gt;并在左栏中搜索system.drawing并在右栏中查看它,然后按确定

    3. 另外,请不要忘记以这种方式更改Unity-&gt; file-&gt;构建设置中的构建设置:

      • PC Mac和Linux而非网络播放器
      • 目标= windows
      • 架构= x86
      • 然后按“播放器设置按钮”转到“新屏幕中的其他设置”并将Api Compatibility lavel设置为.NET 2.0,而不是.NET 2.0子集
    4. 现在你可以自由地测试你的脚本并使用OpenCV做了很棒的工作

      PS:我不确定为什么“npp32_50_35”和“cudart32_50_35”必须在编辑器文件夹中,但这是唯一对我有用的情况。