Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Korištenje openCV-a u C#

[es] :: .NET :: .NET Desktop razvoj :: Korištenje openCV-a u C#

[ Pregleda: 3111 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

explorer-1

Član broj: 98573
Poruke: 102
*.adsl.net.t-com.hr.



Profil

icon Korištenje openCV-a u C#29.02.2008. u 19:56 - pre 158 meseci
Jeli se možda netko bavio pisanjem wrappera za openCV tako da se može koristiti na C#? - Zanima me ako trebam neke funkcije iz openCVa dal ih mogu posebno izdvojiti, prasnuti u neki .dll i onda koristiti u C#, mislim... pitanje je kako to ide?
 
Odgovor na temu

01011011
Avanade
CHICAGO, USA

Član broj: 561
Poruke: 2341
65.216.70.*

ICQ: 45747235
Sajt: www.snailtrail.net


+2 Profil

icon Re: Korištenje openCV-a u C#29.02.2008. u 22:29 - pre 158 meseci
http://code.google.com/p/opencvdotnet/
 
Odgovor na temu

explorer-1

Član broj: 98573
Poruke: 102
*.adsl.net.t-com.hr.



Profil

icon Re: Korištenje openCV-a u C#01.03.2008. u 08:02 - pre 158 meseci
Hvala na linku, no nije mi baš od pomoći. Znam za OpenCV.NET no on mi je beskoristan s obzirom na ograničenje funkcija koje daje.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6006



+4618 Profil

icon Re: Korištenje openCV-a u C#01.03.2008. u 19:07 - pre 158 meseci
Kao sto je taj student napravio svoj managed C++ wrapper za OpenCV, tako ces i ti morati da napravis sebi (sem ako neko to vec nije uradio) preslikavajuci sve funkcije koje ti trebaju. Nazalost ne mozes da napravis wrapper direktno iz C#-a jer interop radi samo sa COM bibliotekama i ne ume da pretoci C++ .h i .lib u upotrebljivi assembly. To radi managed C++ koji moze da se linkuje za unmanaged code sa jedne strane a da publikuje .NET assembly metadata sa druge.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12706



+4688 Profil

icon Re: Korištenje openCV-a u C#01.03.2008. u 20:49 - pre 158 meseci
Citat:
mmix: To radi managed C++ koji moze da se linkuje za unmanaged code sa jedne strane a da publikuje .NET assembly metadata sa druge.


E, cek :)
Da li to znaci da je moguce napraviti neku vrstu proxy dll-a? Ovako nesto:
Winamp ima podrsku za plugin-ove i potrebno je da taj plugin bude .dll koji ima odredjene c++ funkcije (kao Win32 API).
E sad, da bih izbegao rad u c++u, ja bih da napravim Plugin.dll koji je .net class library i koji bih radio u vb.net/c# i tu sve sto treba i jedan Proxy.dll koji ce biti u c++u a koji ce samo da prosledjuje pozive / vraca vrednosti izmedju Winamp-a i Plugin.dll-a

Sorry na offtopic-u, ali vec sam postavljao pitanje o tome ali niko mi nije odgovorio nista konkretno...
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 897
212.200.215.*



+171 Profil

icon Re: Korištenje openCV-a u C#02.03.2008. u 06:28 - pre 158 meseci
^ Mislim da je mmix pisao za obrnuti slucaj, kada unmanaged uvlacis u managed ali da nije COM, znaci native dll, sa C++-om. Inace pitanje je dosta interesantno, ne znam da li postoji neko resenje ali pretpostavljam da ako bi moglo da se resi onda bi opet bio C++ upitanju, samo ne znam da li je moguce raditi sa C++/CLI a da se kompajlira native dll.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6006



+4618 Profil

icon Re: Korištenje openCV-a u C#02.03.2008. u 09:30 - pre 158 meseci
Zapravo, moguce je i obrnuto kroz .NET tehnologiju koja se zove "thunking" koju managed C++ koristi svaki put kad switchuje kontekst iz unmanaged u managed. U principu C++ kompajler napravi "thunk" pred-funkciju koja obavlja switch za sve managed metode/funkcije koje se pozivaju iz unmanaged koda i za sve dllexport funkcije. ako je dllexport onda jos adresu tog thunk-a stavi u DLL exports

Code:

extern "C" __declspec(dllexport) void __stdcall f() 
{
  System::Console::WriteLine("I am f(), a managed function that test.dll exports to native clients");
}


Ovo parce koda je preuzeto iz Can DLLs export managed functions to native clients? gde ima malo pojasnjeno i data neka ogranicanje koriscenja ove tehnologije.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12706



+4688 Profil

icon Re: Korištenje openCV-a u C#02.03.2008. u 17:41 - pre 158 meseci
Hah, nadjoh, ovako nesto mi je trebalo - http://support.microsoft.com/default.aspx/kb/828736 samo sto mi treba .dll a ne .exe, ali taj je princip.
S' tim da nisam mislio da ide preko COM-a, ali ako u MS-u kazu tako, valjda ne moze direktno.
Samo ne znam je l' neophodan ovaj strong name...

PS. prebacicu kasnije ove offtopic poruke u temu koju sam prvobitno kreirao za ovo jos ranije (samo da je nadjem ).
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6006



+4618 Profil

icon Re: Korištenje openCV-a u C#02.03.2008. u 18:06 - pre 158 meseci
Jesi probao nacin sa ovog linka koji sam okacio?

COM je moguc i verovatno preporucen od MS-a (iz prostog razloga sto je jedini nacin na koji se exportuje metadata u tlb), ali sigurno nije jedini nacin.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12706



+4688 Profil

icon Re: Korištenje openCV-a u C#02.03.2008. u 18:13 - pre 158 meseci
Nisam, jer koliko vidim, on samo koristi managed code u toj funkciji a ne poziva iz managed .dll-a (il' nesto bas nije u redu sa mojim vidom) a ja blage veze nemam kako se to poziva (to je ono sto i pitam jelde :)). Posle bih to samo koristio kao sablon i menjao imena funkcija.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6006



+4618 Profil

icon Re: Korištenje openCV-a u C#02.03.2008. u 18:35 - pre 158 meseci
Kao sto zove Console.WriteLine tako moze da zove i tvoje managed funkcije.

Pazi, managed DLL ne postoji, to je jos jedna zbunjujuca zabluda koju MS siri naokolo. Svi DLLovi su unmanaged i njihova struktura se nije menjala od pamtiveka, samo sto pure C# DLL na primer nema native exporte u sebi vec ima samo metadata blok. Nista u strukturi DLLa te ne sprecava da imas i native exporte i managed metadata block, i onda imas dva scenarija:

1. Kad DLL vezujes iz native klijenta (npr kad se WinAmp kaci na njega) vidi native DLL exporte a ignorise managed metadata jer ne zna sta bi sa njima radio
2. Kad DLL vezujes iz managed klijenta (npr VB.NET ili C#) onda klijent vidi managed metadata a ne vidi native exporte jer ne zna sta bi sa njima
3. Kad DLL vezujes iz managed C++-a vidis oba


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12706



+4688 Profil

icon Re: Korištenje openCV-a u C#02.03.2008. u 19:05 - pre 158 meseci
mmix i ja smo se dogovorili da zajedno napravimo primer ovog. Ja sam (naravno) uradio laksi deo - .net class library:
Code:

Public Class TestClass
    Public Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
        Return a + b
    End Function
End Class


Kompajlirani dll je u attachment-u.
Prikačeni fajlovi
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6006



+4618 Profil

icon Re: Korištenje openCV-a u C#02.03.2008. u 20:21 - pre 158 meseci
Ok, eve ga

Prikacen je solution sa tri projekta:
- FirstManagedVB sa datom klasom, cist managed code
- SecondNativeWrapper - pomenuti wrapper koji marshaluje pozive od native pozivara u gornju managed klasu
- ThirdNativeCaller - mala C++ aplikacija, Win32 native koja se kaci na SecondNativeWrapper.dll i poziva Add(int, int)

Ako se pogleda exports sekcija SecondNativeWrapper.dll vidi se da ima native export iako je managed C++


Dumpbin prijavljuje export u SecondNativeWrapper.dll:
Code:

C:\Projects\NativeSolution\Debug>dumpbin SecondNativeWrapper.dll /exports

File Type: DLL

  Section contains the following exports for SecondNativeWrapper.dll

    00000000 characteristics
    47CB0662 time date stamp Sun Mar 02 20:56:18 2008
        0.00 version
           1 ordinal base
           1 number of functions
           1 number of names

    ordinal hint RVA      name

           1    0 00001020 [email protected] = [email protected]


Dumpbin prijavljuje taj export kao import za ThirdNativeCaller.exe
Code:

C:\Projects\NativeSolution\Debug>dumpbin ThirdNativeCaller.exe /imports

File Type: EXECUTABLE IMAGE

  Section contains the following imports:

    SecondNativeWrapper.dll
                418350 Import Address Table
                4181B8 Import Name Table
                     0 time date stamp
                     0 Index of first forwarder reference

                    0 [email protected]


Kad pozoves Win32 aplikaciju, ona lepo podigne wrapper, koji podigne .NET klasu i sabere brojeve:
Code:

C:\Projects\NativeSolution\Debug>ThirdNativeCaller.exe
Prvi broj: 12
Drugi broj: 23
Rezultat sabiranja je 35


voila..

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
Prikačeni fajlovi
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4882
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+629 Profil

icon Re: Korištenje openCV-a u C#02.03.2008. u 20:52 - pre 158 meseci
Perfect !
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Korištenje openCV-a u C#

[ Pregleda: 3111 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.