x64 - opencv c# dll



Unity의 OpenCV(EMGUCV wrapper) 통합 (1)

아시다시피 OpenCV는 컴퓨터 비전에서 놀랍고도 강력한 작업을 수행 할 수있는 매우 유용한 라이브러리입니다. 그래서 Unity3d에서 사용하는 방법을 알아 내려고 즐거운 시간을 보냈습니다. 문제가 많았습니다. 인터넷 검색에서 몇 가지 제안을 발견했지만 저에게 도움이되지는 않았습니다.

  • Unity Pro 4.0을 사용하고 있습니다.
  • 이 버전의 Emg CV (emgucv-windows-universal-gpu 2.4.9.1847)
  • 화합 프로젝트를위한 나의 목표는 다음과 같습니다 : 창과 웹 플레이어

이것은 그것을 사용하고자하는 모든 사람들을 위해 내가 한 일입니다.

  1. EmguCV의이 버전을 설치하십시오. EMGU는 C :
  2. 이 폴더에는 "emgucv-windows-universal-gpu 2.4.9.1847"이라는 단일 폴더가 있습니다.
  3. "bin 폴더"로 이동하십시오.
  4. "bin 폴더"에서 x86 폴더 (22 dlls)에있는 모든 dll과 bin에있는 dll (12 dll : Emgu.CV, Emgu.CV.UI ...)을 모두 복사해야합니다. X64 대상의 경우 동일한 작업을 시도 할 수 있습니다.이 작업은 X64 폴더에서 dll을 가져 와서 수행 할 수 있습니다.
  5. Unity 프로젝트 (Assets-> Plugins)에 Plugins라는 폴더를 만듭니다.
  6. 이 34 개의 dll 파일을 모두 Plugins 폴더에 붙여 넣습니다.
  7. 이 34 dll 파일에서 "npp32_50_35"와 "cudart32_50_35"를 유니티 편집기 폴더에 복사하십시오.이 경우 "C : \ Program Files (x86) \ Unity \ Editor"
  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. Plugins 폴더에 다른 dll을 추가하면 Mono Editor에서 자동으로 참조되지만 "System.Drawing"라이브러리에 문제가있을 수 있으므로 using System.Drawing 하는 것을 잊지 마십시오. 또한 스크립트 편집기로 이동하여 참조해야합니다.

    MonoDevelop-Unity의 경우 왼쪽의 솔루션 탐색기로 이동하여 Refrences-> Edit references->를 마우스 오른쪽 버튼으로 클릭하고 왼쪽 열에서 system.drawing을 검색하여 오른쪽 열에 확인한 다음 확인을 누릅니다.

  3. 또한이 방법으로 Unity-> file-> build 설정에서 빌드 설정을 변경하는 것을 잊지 마십시오 :

    • 웹 플레이어 대신 PC Mac 및 Linux
    • 목표 = 창
    • 아키텍처 = x86
    • 그런 다음 "플레이어 설정 버튼"을 눌러 "새 화면의 다른 설정"으로 가서 .NET 2.0 하위 집합 대신 Api Compatibility lavel을 .NET 2.0으로 설정합니다

지금은 스크립트를 테스트하고 OpenCV를 사용하여 멋진 작업을 할 수 있습니다.

추신 : "npp32_50_35"와 "cudart32_50_35"가 Editor 폴더에 있어야하는 이유가 정확히 무엇인지 모르겠지만 나에게 도움이되는 유일한 상황입니다.