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

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中创建一个文件

正如你们所知道的,OpenCV是一个非常有用的库,它可以让你们在计算机视觉中做出惊人的、强大的事情。所以我花了很长时间研究如何在Unity3d中使用它,我遇到了很多问题,在网上搜索,我找到了一些建议,但没有一个对我有效

  • 我使用的是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:无法加载模块中的类。我发现此错误