hola , hoy encontré una librería para vb.net muy interesante , la cual puede reconocer visualmente objetos , personas , etc. como snapchat.
hay alguien el el foro que pueda ayudarme a implementar esta librería en un programa en vb.net 2008 y que use la webcam.
apreciaría si me comenten algún code implementando esta lbreria. :-*
Hola.
OpenCV no es una librería desarrollada en
.NET, es una librería "nativa" desarrollada en
C/C++. Si quieres usarla en la plataforma
.NET entonces tienes que desarrollar una clase que sirva como
wrapper de las funciones exportadas en la librería, esto lo harías mediante P/Invokes (Platform Invocation), así como también debes declarar una equivalencia a las enumeraciones y estructuras y demás miembros públicos necesarios que estén definidos en dicha librería.
Ejemplo:
Imports System.Runtime.InteropServices
Imports System.Security
Namespace OpenCV.Interop
<SuppressUnmanagedCodeSecurity>
Friend NotInheritable Class NativeMethods
Private Sub New()
End Sub
<DllImport("OpenCV.dll", EntryPoint:="Nombre de la función", CharSet:=CharSet.Unicode)>
Friend Shared Function NombreAMostrarDeLaFunción(
<[In]> <MarshalAs(UnmanagedType.LPWStr)> ByVal param1 As String,
<[In]> <MarshalAs(UnmanagedType.I4)> ByVal param2 As Integer,
<[In]> <MarshalAs(UnmanagedType.I4)> ByVal param3 As NombreDeLaEnumeración,
<Out> <MarshalAs(UnmanagedType.Struct)> ByRef param4 As NombreDeLaEstructura
) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function
Friend Enum NombreDeLaEnumeración As Integer
Name1 = &H1
Name2 = &H2
End Enum
<StructLayout(LayoutKind.Sequential)>
Friend Structure NombreDeLaEstructura
<MarshalAs(UnmanagedType.SysInt)>
Friend Field1 As IntPtr
<MarshalAs(UnmanagedType.U4)>
Friend Field2 As UInteger
End Structure
End Class
End Namespace
...Debes hacer más o menos eso por cada una de las funciones de OpenCV que quieras utilizar en tu aplicación.
Analizar la firma de cada función o export dentro de una librería y escribir su wrapper equivalente con los tipos de .NET es algo que requiere tiempo aparte de un mínimo de conocimiento en código no administrado, no esperes que alguien lo vaya a hacer por ti... más cuando se trata de una librería de tal magnitud con cientos o miles de miembros diferentes, es una locura.
Por suerte para ti y para cualquiera que desee usar OpenCV en .NET, ya existe gente que ha dedicado su tiempo en desarrollar wrappers de
OvenCV para
.NET que puedes descargar aquí:
- https://www.nuget.org/packages/OpenCV.Net/
- https://github.com/shimat/opencvsharp
- https://code.google.com/archive/p/opencvdotnet/
- http://www.emgu.com/wiki/index.php/Main_Page
Y por último, te hago saber que para .NET existe
AForge, una alternativa a
OpenCV completamente administrada, con documentación XML de .NET, y gratuita:
- http://www.aforgenet.com/framework/
Saludos.
Gracias por el dato Elektro uso opencv en python y no conocia la alternativa para .net
Cita de: tincopasan en 24 Septiembre 2017, 09:21 AM
Gracias por el dato Elektro uso opencv en python y no conocia la alternativa para .net
Pues ahora me entero que también programas en .NET :P, a ver si te vemos pronto ayudando a usuarios necesitados por este subforo.
Por si os sirve a los dos: según todo lo que leí, parece ser que
Emgu CV es el wrapper más popular, actualizado y estable, y dispone de buena documentación XML:
- http://www.emgu.com/wiki/files/3.3.0/document/html/8dee1f02-8c8a-4e37-87f4-05e10c39f27d.htm
Y varios
samples para C# y VB.NET:
- http://www.emgu.com/wiki/index.php/Code_Gallery
Saludos.
Gracias de nuevo Elecktro , el Emgu CV se ve mejor voy a empezar a trabajar en ello . ;-)