Programing

OpenCV 용 .Net (dotNet) 래퍼?

lottogame 2020. 11. 5. 07:39
반응형

OpenCV 용 .Net (dotNet) 래퍼?


나는 그들 중 몇 개를 보았다. opencvdotnet , SharperCV , EmguCV , One on Code Project .

누구든지 이것들에 대한 경험이 있습니까? 나는 코드 프로젝트에서 약간 놀았지만 복잡한 작업을 시도하자마자 잡을 수없는 불쾌한 예외 (예 : Msgbox 예외)가 발생했습니다. 크로스 플랫폼 (Mono 지원)이 가장 좋습니다.


나는 opencvdotnet으로 시작했지만 더 이상 적극적으로 개발되지 않았습니다. 또한 내가 필요한 기능 (얼굴 인식)에 대한 지원은 고르지 못했습니다. 저는 지금 EmguCV를 사용 하고 있습니다 : API의 훨씬 더 많은 부분을 감싸고 있으며 그 뒤에있는 사람은 제안과 요청에 매우 반응합니다. 코드는보기에 즐겁고 Mono에서 작동하는 것으로 알려져 있습니다.

내 블로그에 빠른 시작 안내서 를 작성했습니다.


우리는 OpenCVSharp를 사용 합니다. Google 코드 웹 사이트는 일본어로되어 있지만 전체적으로 IDisposable 최신 OpenCV 빌드 및 구현을 사용합니다. 그것은 우리가 지금까지 본 다른 어떤 것보다 더 많은 기능을 제공하는 것으로 보이며 여전히 활성화되어 있습니다. 매우 광범위한 예제 프로그램도 있습니다.


원래 질문이 2008 년에 제기되었고 OpenCV 2.0이 2009 년 에 출시 되었다는 점에 주목하는 것이 중요하다고 생각합니다 . 버전 2.0 릴리스에는 OP가 직면했던 이전 C 인터페이스보다 작업하기 훨씬 쉬운 C ++ 래퍼가 도입되었습니다. 내 .NET 프로젝트의 경우 모든 그래픽 조작을 네이티브 C ++로 남겨 둡니다.

시도해보십시오 : OpenCV 라이브러리에 연결되는 C ++ / CLR DLL 프로젝트를 만듭니다. OpenCV 매뉴얼은 Windows C ++ EXE에 대해이 작업을 수행하는 방법을 설명합니다. 동일한 단계가 C ++ / CLR DLL에도 적용됩니다. 물론 DLL은 .NET EXE에서 호출 할 수있는 메서드를 내 보냅니다.

테스트하려면 약간의 조정만으로 OpenCV 샘플을 DLL에 통합 할 수 있어야합니다. (프로젝트에 .CPP 파일을 추가하고, main () 함수를 클래스 멤버로 변환하는 등의 작업을 수행합니다.-당신은 드릴을 알고 있습니다 ...) 좋은 테스트 후보는 "mat_mask_operations"샘플 일 수 있습니다.


OpenCV.NET은 NuGet에서 사용할 수 있습니다.

https://bitbucket.org/horizongir/opencv.net

https://www.nuget.org/packages/OpenCV.Net

다음은 프로젝트 사이트의 기능 목록입니다.

OpenCV.NET은 인기있는 OpenCV 컴퓨터 비전 및 이미지 처리 라이브러리를위한 .NET 인터페이스입니다. 이러한 바인딩은 1 년에 걸쳐 개발되었으며 다른 시도에서 누락 된 많은 기능을 포함합니다.

  • 플랫폼 간 Mono 호환성 (P / Invoke 만 사용됨)
  • 최신 C API (문서화되지 않은 기능 포함)를 거의 100 % 지원
  • 지원되는 모든 메서드, 클래스 및 열거 형 멤버에 대한 전체 문서 / 지능 (여러 소스에서 힘들게 채굴)
  • 예외 지원
  • 가비지 수집기 친화적 :
    • GC는 행렬과 이미지가 사용하는 실제 메모리를 알고 있습니다.
    • 포인터는 동시 가비지 콜렉션이 발생하더라도 함수 호출에서 생존하도록 보장됩니다.
  • 가능한 한 C ++ API를 따르는 객체 모델 (향후 C ++ API 지원 증가)
  • BSD 스타일 라이선스 (MIT)

최고의 래퍼는 opencvsharp http://code.google.com/p/opencvsharp/ 라고 생각합니다 .


EmguCV를 사용하여 C #에서 OpenCv를 쉽게 시작할 수 있도록 NuGet 패키지를 만들었습니다.

확인 해봐! Visual Studio에서 검색하고 myEmguCV.Net NuGet 패키지를 추가합니다 .

https://www.nuget.org/packages/myEmguCV.Net


SharperCV는 우리가 선택한 도구였으며 로봇 공학 프로젝트를 위해 우리를 실망시키지 않았습니다 . 현재 버려진 것으로 표시되어 있지만 코드는 정말 좋은 모양이며 필요에 맞게 사용자 정의하기 위해 약간만 조정하면됩니다. msgbox가 없으며 실제로 매우 정상적인 예외 처리입니다.

그러나 상호 운용성 계층으로 인해 교차 플랫폼이 아닙니다.


이 질문에 대한 답변이 오랫동안 있다는 것을 알고 있지만 여기에 아주 좋은 래퍼가 있음을 추가하고 싶습니다 . 이것은 코드 프로젝트에서 시도한 openCV 래퍼의 새 버전입니다 . 나는 며칠 동안 그것을 시도했고 모든 것이 완벽하게 작동합니다. 또한 몇 분 만에 작동합니다.

모노와의 호환성은 모르지만 Visual Studio 2010에서는 매력적으로 작동하고 시간과 돈을 절약했습니다 (내 프로젝트는 상용이고 대부분의 라이브러리는 상용을 허용하지 않는 라이선스가있는 오픈 소스입니다. 코드를 게시하지 않는 한 활용)

참고 URL : https://stackoverflow.com/questions/85569/net-dotnet-wrappers-for-opencv

반응형