c# - source - .Net(dotNet) envoltorios para OpenCV?
opencv source (8)
Comencé con opencvdotnet pero ya no está activamente desarrollado. Además, el soporte para la función que necesitaba (facedetection) era desigual. Estoy usando EmguCV ahora: envuelve una parte mucho mayor de la API y el tipo detrás de ella es muy receptivo a las sugerencias y solicitudes. Es un placer observar el código y se sabe que funciona en Mono.
He escrito una guía rápida para comenzar en mi blog.
He visto que hay algunos de ellos. opencvdotnet , SharperCV , EmguCV , One on Code Project .
¿Alguien tiene alguna experiencia con alguno de estos? Jugué un poco con el de Code Project, pero tan pronto como traté de hacer algo complicado, obtuve algunas desagradables excepciones inaplicables (es decir, excepciones de Msgbox). La plataforma cruzada (compatible con Mono) sería lo mejor.
Creé un paquete NuGet para que sea fácil comenzar con OpenCv en C #, usando EmguCV.
¡Echale un vistazo! En Visual Studio, busque y agregue el paquete myEmguCV.Net NuGet.
Creo que el mejor contenedor es opencvsharp OpenCVSharp
Creo que es importante tener en cuenta que la pregunta original se formuló en 2008 , y OpenCV 2.0 se lanzó en 2009 . El lanzamiento de la versión 2.0 introdujo un contenedor C ++ que es significativamente más fácil de trabajar que la interfaz C anterior con la que se enfrentaba el PO. Para mi proyecto .NET, estoy dejando toda la manipulación gráfica en C ++ nativo.
Intente esto: cree un proyecto DLL de C ++ / CLR que enlace a las bibliotecas de OpenCV. El manual de OpenCV describe cómo hacer esto para un EXE de Windows C ++, los mismos pasos también funcionan para una DLL de C ++ / CLR. Luego, por supuesto, el DLL exporta métodos que se pueden llamar desde un EXE .NET.
Para probarlo, debería poder incorporar cualquiera de los ejemplos de OpenCV en su archivo DLL con un pequeño ajuste. (Agregue el archivo .CPP a su proyecto, convierta la función main () a un miembro de la clase, etc. - conoce el ejercicio ...) Un buen candidato para la prueba podría ser la muestra "mat_mask_operations".
OpenCV.NET está disponible en NuGet
https://bitbucket.org/horizongir/opencv.net
https://www.nuget.org/packages/OpenCV.Net
Aquí hay una lista de características del sitio del proyecto:
OpenCV.NET es una interfaz .NET para la popular biblioteca de procesamiento de imágenes y visión por computadora OpenCV. Estas consolidaciones se desarrollaron en el transcurso de un año e incluyen muchas características que han faltado en otros intentos, a saber:
- Compatibilidad Mono multiplataforma (solo se utiliza P / Invoke)
- Soporte muy cercano al 100% de la última API C (incluidas las funciones no documentadas)
- Documentación completa / intellisense para todos los métodos, clases y miembros enum soportados (minuciosamente extraídos de muchas fuentes diferentes)
- Soporte para excepciones
- Garbage-collector friendly:
- GC conoce la memoria real utilizada por matrices e imágenes
- Se garantiza que los punteros sobrevivan llamadas de función incluso si ocurre una recolección de basura concurrente
- Modelo de objeto que sigue la API de C ++ tanto como sea posible (hacia una mayor compatibilidad en el futuro con la API de C ++)
- Licencia de estilo BSD (MIT)
Sé que esta pregunta ha sido respondida durante mucho tiempo, pero me gustaría añadir que hay una muy buena envoltura here . Esta es la nueva versión del contenedor openCV que probó en el proyecto de código . Lo he intentado por un par de días y todo funciona perfecto. Además, lo tengo trabajando en minutos.
No sé por la compatibilidad con mono pero en Visual Studio 2010, funciona como un amuleto y me ahorró toneladas de tiempo y dinero (mi proyecto es comercial y la mayor parte de la biblioteca es de código abierto con licencia que no permite publicidad utilización a menos que se publique el código)
SharperCV fue nuestra herramienta de elección, y no nos decepcionó, para nuestro proyecto de robótica . A pesar de que actualmente está marcado como abandonado, el código está en muy buena forma, solo requiere ajustes menores para personalizarlo según sus necesidades. Sin msgboxes, y realmente manejo de excepciones muy sano.
No multiplataforma, sin embargo, debido a la capa de interoperabilidad.
Usamos OpenCVSharp el sitio web del código de google está en japonés, pero utiliza las últimas versiones e implementaciones de OpenCV, que pueden ser insertables. Parece proporcionar más funcionalidad que cualquiera de los otros que hemos visto hasta la fecha y aún está activo. También tiene programas de ejemplo bastante extensos.