[C++]Array van beelden -> memory en daarna -> schijf

Pagina: 1
Acties:
  • 111 views sinds 30-01-2008
  • Reageer

  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
Wij zitten met een probleem. Voor een project voor mijn studie zijn wij bezig om beelden uit een firewire camera te halen. Bij deze camera zit een SDK met c++ files. Tussen deze files zit een pre-programmed viewer die de beelden uit de camera haalt en op het scherm laat zien.

Wij hadden deze viewer dusdanig aangepast dat deze het beeld niet meer weergeeft maar een serie beelden als .tif op schijf opslaat. Nu is het alleen zo dat zodra de programmatuur bezig gaat met het wegschrijven van de serie beelden de harde schijf de bottleneck is. Hierdoor kunnen we niet realtime alle beelden opslaan.

Nu hadden we bedacht om de beelden eerst naar het geheugen weg te schrijven (bufferen) en daarna ze een voor een op schijf te zetten. Het geheugen zou hier snel genoeg voor moeten wezen. Dit krijgen wij echter niet voor elkaar. Het is volgens mij niet zo heel ingewikkeld, maar het nadeel is dat we redelijke c/c++ noobs zijn. Dus wie kan ons helpen.

De relevante code (direct uit SDK):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void CMainFrame::callbackNewFrame(void* context, PdtFrame* pFrame)
{
    CMainFrame*         pThis = (CMainFrame*) context;


    // 1. Update view.

    pThis->m_wndView.CopyFrame(pFrame);

    // 2. Update histogram, if it's open.

    pThis->m_lockHistogramWnd.Lock();

    if (pThis->m_pWndHistogram)  //ZZZZ Known bug...
        pThis->m_pWndHistogram->UpdateHistogram(pFrame);

    // 3. Save this to a file?
    if (!pThis->m_saveFrame.IsEmpty())
    {
        ImageWriteTiff(pThis->m_saveFrame, pFrame);
        pThis->m_saveFrame.Empty();
    }

    pThis->m_lockHistogramWnd.Unlock();
}


Zodra er een nieuw frame is wordt deze functie aangeroepen, wordt het beeld ververst en indien een user ervoor kiest om het beeld op te slaan wordt deze opgeslagen.

Het adres van de betreffende frame staat in een pointer Pframe welke van het type PdtFrame is.

Kan iemand ons miss helpen met een paar regels code wat het geheugen alloceert, betreffende frame naar een array schrijft en dmv ImageWriteTiff na de serie beelden weggeschreven wordt.

  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 21-11 19:32
Gebruik:

malloc (http://en.wikipedia.org/wiki/Malloc)

Icm sizeof pThis en stop deze pointer in een array.

Klaar?

Edit: maak gewoon elke keer een nieuwe pointer aan (en "free" de oude niet!!), en dan in array.

[ Voor 30% gewijzigd door Maxxi op 10-04-2007 20:40 ]


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Nee, dat werkt ook niet. Ik zou toch adviseren om iets meer kennis in huis te halen. Misschien op een lokale hogeschool/universiteit een student vinden die voor 20 euro per uur bij wil klussen? Wat je wil is namelijk niet in die ene functie te doen.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 21-11 19:32
MSalters schreef op dinsdag 10 april 2007 @ 20:47:
Nee, dat werkt ook niet. Ik zou toch adviseren om iets meer kennis in huis te halen. Misschien op een lokale hogeschool/universiteit een student vinden die voor 20 euro per uur bij wil klussen? Wat je wil is namelijk niet in die ene functie te doen.
Waarom zou dat niet werken?

Je hebt alleen een 2e methode nodig voor het opslaan op disk.

  • ymoona
  • Registratie: Januari 2004
  • Nu online
Je kan het maken met een list van beelden, desnoods met twee treads, maar dan moet je wel even uitzoeken hoe het zit met twee gebruikers in een list.

https://f1nerd.nl


  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
Hmm het is dus niet erg eenvoudig?

Malloc hadden we idd al geprobeerd maar dat ging niet goed (geheugengebruik bleef hetzelfde).

Wij dachten eerst gewoon simpelweg de data dmv de pointer in een array op te slaan en dat later uit te lezen. Maar dat lukte dus niet :(.

Overigens is bovenstaande functie een onderdeel van een groter programma met diverse subfiles en functies

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

Schrijf je dan niet langzaamaan je hele geheugen vol? Dan ben je nog nergens.

  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 21-11 19:32
Malloc hadden we idd al geprobeerd maar dat ging niet goed (geheugengebruik bleef hetzelfde).


Ehmm, het ging toch met het schijf gebruik?
Post je code es.

En je slaat het toch pas op na een tijd gebuffert te hebben?

  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
GX schreef op dinsdag 10 april 2007 @ 21:16:
Schrijf je dan niet langzaamaan je hele geheugen vol? Dan ben je nog nergens.
Dat maakt niet zoveel uit. Het programma hoeft niet netjes geprogrammeerd te zijn. Het moet 1 reeks van beelden (zeg een paar 100 stuks op 640*480) naar het geheugen weg kunnen schrijven en deze later op kunnen slaan. Als het maar ff 1x werkt is het goed, als je daarna moet rebooten is niet zo erg.
Maxxi schreef op dinsdag 10 april 2007 @ 21:20:

Malloc hadden we idd al geprobeerd maar dat ging niet goed (geheugengebruik bleef hetzelfde).


Ehmm, het ging toch met het schijf gebruik?
Post je code es.

En je slaat het toch pas op na een tijd gebuffert te hebben?
Ja, malloc hadden we later geprobeerd nadat het direct opslaan van de 1ste serie beelden was gelukt. Code komt eraan, moet ff doorgemaild worden door mn projectgenoot.

[ Voor 43% gewijzigd door zandpaddo op 10-04-2007 21:25 ]


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Ik snap er niks van, je krijg de data toch gewoon binnen?
wat is er mis met een vector van pointers naar PdtFrame's?
Als deze pointer steeds naar dezelfde plek wijst gebruik je toch gewoon de copy-constructor?

lijkt mij vrij simpel, maar misschien begrijp ik het probleem niet.
Geheugengebruik is natuurlijk wel een issue, maar ( ( 100 * 640 * 480 * 3 ) / 1024 ) / 1024 = 90Mb is voor een moderne computer natuurlijk peanuts.

[edit]
voor de duidelijkheid een voorbeeld waarbij ik de binnenkomende frames kopieer.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static std::vector<PdtFrame> storedFrames;
static std::vector<CMainFrame> storedContext;

void CMainFrame::callbackNewFrame(void* context, PdtFrame* pFrame) {

    storedFrames.push_back(*pFrame);

    storedContext.push_back(*context);
}

void slaDieShitOp() {

    for(int i=0; i<storedFrames.size() && i <storedContext; i++) {
        ImageWriteTiff( storedContext[i].m_saveFrame, storedFrames[i]);
    }
}

liever gebruik je een map voor dit soort dingen.

[ Voor 40% gewijzigd door Arjan op 10-04-2007 21:39 ]

oprecht vertrouwen wordt nooit geschaad


  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
Het is een beetje een zooitje, maar onze niet werkende code van het proberen te alloceren van geheugen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
void CMainFrame::callbackNewFrame(void* context, PdtFrame* pFrame)
{
    CMainFrame*         pThis = (CMainFrame*) context;
  static int i= 0;
  int k=0;
  PdtFrame* plaatje;
  PdtFrame* plaatjes;
  
  char name[256];
    // 1. Update view.

    // pThis->m_wndView.CopyFrame(pFrame);

    // 2. Update histogram, if it's open.

    /* pThis->m_lockHistogramWnd.Lock();

    if (pThis->m_pWndHistogram)  //ZZZZ Known bug...
        pThis->m_pWndHistogram->UpdateHistogram(pFrame); */

    sprintf(name,"%d.tif", i++);
    if (i == 0 ) plaatjes = (PdtFrame*) calloc(100, sizeof(*pFrame));
    // printf("formaat=%d", sizeof(pFrame));
    if (i<100) {
        memcpy(plaatjes[i],*pFrame,sizeof(*pFrame));
    }
    if (i > 99 && i <200){
                ImageWriteTiff(name,plaatjes[k]);
                k++;
    }



    // 3. Save this to a file?
    if (!pThis->m_saveFrame.IsEmpty())
    {
        ImageWriteTiff(pThis->m_saveFrame, pFrame);
        pThis->m_saveFrame.Empty();
    }

    pThis->m_lockHistogramWnd.Unlock();
    
}

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

het is inderdaad een rommeltje, maar wat ik zo wel kan zeggen zonder het proberen te lezen, is dat je in een callback functie zit. Als je elk frame plek gaat maken voor nog 100 frames dan ga je wel een klein beetje een probleem krijgen met geheugen ja...

oprecht vertrouwen wordt nooit geschaad


  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 21-11 19:32
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
private * Plaatjes<CMainFrame> [100];
    private int i = 0;

void CMainFrame::callbackNewFrame(void* context, PdtFrame* pFrame)
{
    CMainFrame*            pThis = (CMainFrame*) context;


    // 1. Update view.

    pThis->m_wndView.CopyFrame(pFrame);

    // 2. Update histogram, if it's open.

    pThis->m_lockHistogramWnd.Lock();

    if (pThis->m_pWndHistogram)  //ZZZZ Known bug...
        pThis->m_pWndHistogram->UpdateHistogram(pFrame);

    // 3. Save this to a file?

    Plaatjes[i] = &pThis; // Douw plaatje in array
    i++; // Tel aantal plaatjes 1tje op
    
    if(i >= 100){ // Als 100 plaatjes, save to disk
    for(int y = 0; y <= 100; y++){
        
        if (!Plaatjes[y]->m_saveFrame.IsEmpty())
        {
            ImageWriteTiff(Plaatjes[y]->m_saveFrame, pFrame);
            Plaatjes[y]->m_saveFrame.Empty();
        }

        Plaatjes[y]->m_lockHistogramWnd.Unlock(); // Wat doet dit?
    }
}


Is niet gecompiled, misschien syntax error ofzo, maar volgens mij moet dit priciepe gewoon werken.

[ Voor 6% gewijzigd door Maxxi op 10-04-2007 21:47 ]


  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
thanks, morgen gaan we het proberen (heb nu de camera niet bij de hand, ligt op uni).

  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 21-11 19:32
zandpaddo schreef op dinsdag 10 april 2007 @ 21:48:
thanks, morgen gaan we het proberen (heb nu de camera niet bij de hand, ligt op uni).
no offence, maar op universiteit en je komt hier zelf niet uit?

Ik @ HBO Technische informatica 2e jaar met 6 weken C/C++.


Btw, zet de int i weer terug op 0 nadat files opgeslagen zijn.
En check pointers goed, of het juist wel of juist niet met een & ervoor moet.

Succes

  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
Maxxi schreef op dinsdag 10 april 2007 @ 21:59:
[...]


no offence, maar op universiteit en je komt hier zelf niet uit?

Ik @ HBO Technische informatica 2e jaar met 6 weken C/C++.


Btw, zet de int i weer terug op 0 nadat files opgeslagen zijn.
En check pointers goed, of het juist wel of juist niet met een & ervoor moet.

Succes
Die Histogram is een extra functie die een histogram van het plaatje laat zien. Niet relevant voor het verkrijgen en opslaan van beelden

Jep, i know, maar ik ben geen informatica student. Ben werktuigbouwkunde student en wij hebben nooit C/C++ geleerd. Heb van het weekend de basis voor c doorgenomen en ben al blij dat ik eenvoudige code kan lezen.

[ Voor 10% gewijzigd door zandpaddo op 10-04-2007 22:03 ]


  • DroogKloot
  • Registratie: Februari 2001
  • Niet online

DroogKloot

depenisvanjezus

Om de 100 frames een geheugendump maken zal ook niet fijn werken, dat betekent namelijk nog steeds dat je elke ~5 seconden (even aannemende dat de framerate van dat ding 20 is) een mega-vertraging krijgt in plaats van per frame een kleine als de schrijf-operaties niet asynchroon verlopen. Je zult je moeten verdiepen in threads, als je tenminste echt realtime (en langer dan een paar seconden ;)) bezig wilt zijn.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Helaas van je weekend, dit is geen C, maar C++. memcpy gaat dus waarschijnlijk niet werken. Een nieuwe kopie maken van PdtFrame* pFrame doe je zo:
C++:
1
2
3
4
5
6
std::list<PdtFrame*> theFrames;
void CMainFrame::callbackNewFrame(void* context, PdtFrame* pFrame)
{
  PdtFrame* copy = new PdtFrame(*pFrame); // make a copy
  theFrames.push_back(copy); // store it.
}


De list opruimen doe je zo
C++:
1
2
3
4
while (!theFrames.empty()) { // zolang we er nog hebben
  delete theFrames.front(); // Gooi er een weg, omgekeerde van new
  theFrames.pop_front(); // en naar de volgende
}


Met een beetje geluk kan het iets simpeler, maar minder efficient
C++:
1
2
3
4
5
std::list<PdtFrame> theFrames; // Geen pointers hier
void CMainFrame::callbackNewFrame(void* context, PdtFrame* pFrame)
{
  theFrames.push_back(*pFrame); // Store a copy in theFrames
}

[ Voor 19% gewijzigd door MSalters op 11-04-2007 20:43 ]

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
DroogKloot schreef op dinsdag 10 april 2007 @ 23:04:
Om de 100 frames een geheugendump maken zal ook niet fijn werken... Je zult je moeten verdiepen in threads, als je tenminste echt realtime bezig wilt zijn.
Nee hoor, overlappen I/O werkt ook uitstekend, en dan heb je geen threads nodig.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
MSalters schreef op woensdag 11 april 2007 @ 20:41:
Helaas van je weekend, dit is geen C, maar C++. memcpy gaat dus waarschijnlijk niet werken. Een nieuwe kopie maken van PdtFrame* pFrame doe je zo:
C++:
1
2
3
4
5
6
std::list<PdtFrame*> theFrames;
void CMainFrame::callbackNewFrame(void* context, PdtFrame* pFrame)
{
  PdtFrame* copy = new PdtFrame(*pFrame); // make a copy
  theFrames.push_back(copy); // store it.
}


De list opruimen doe je zo
C++:
1
2
3
4
while (!theFrames.empty()) { // zolang we er nog hebben
  delete theFrames.front(); // Gooi er een weg, omgekeerde van new
  theFrames.pop_front(); // en naar de volgende
}


Met een beetje geluk kan het iets simpeler, maar minder efficient
C++:
1
2
3
4
5
std::list<PdtFrame> theFrames; // Geen pointers hier
void CMainFrame::callbackNewFrame(void* context, PdtFrame* pFrame)
{
  theFrames.push_back(*pFrame); // Store a copy in theFrames
}
Okeej, gaan we ook even proberen. Hoe haal ik een voor een de pointer van de opgeslagen frames uit "theFrames" voor het wegschrijven naar tif?

De code van Maxxi werkte iig niet. Het ging fout met de private declaraties. Gaf een error dat er een ; voor moest. Tig dingen geprobeerd maar werkte niet.

Het probleem zit m er voornamelijk in dat die functie "void CMainFrame::callbackNewFrame(void* context, PdtFrame* pFrame)" iedere keer opnieuw aangeroepen wordt na een nieuw frame en de voorgaande daardoor frames gewist worden. Er moet dus iets gecreerd worden waarin 1 voor 1 de frames worden opgeslagen met bijbehorende pointers en dat deze ook nog behouden blijft bij een volgend frame.

C++ is inderdaad een stuk ingewikkelder voor de buitenstaander dan C. Al zitten er ook wel overeenkomsten tussen. Maar als het niet lukt laten we het maar zo, kunnen hier niet te lang bij stilstaan. Dan voorlopig maar een reeks beelden die niet 100% een vaste tijdsinterval hebben.

overigens komen alle files uit een SDK van Prosilica (de fabrikant). Zie http://www.prosilica.com/products/1394_sdk.html

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Het eerste stukje code wat ik gister gepost heb doet echt exact wat je wil, je moet alleen zelf kiezen wanneer je genoeg frames hebt en wanneer je gaat wegschrijven...
MSalters schreef op woensdag 11 april 2007 @ 20:41:
[...]

Met een beetje geluk kan het iets simpeler, maar minder efficient
C++:
1
2
3
4
5
std::list<PdtFrame> theFrames; // Geen pointers hier
void CMainFrame::callbackNewFrame(void* context, PdtFrame* pFrame)
{
  theFrames.push_back(*pFrame); // Store a copy in theFrames
}
Waarom zou dat minder efficiënt zijn?
Voor een dergelijke bewerking wordt gewoon de copy-operator aangeroepen.

[ Voor 47% gewijzigd door Arjan op 11-04-2007 21:57 ]

oprecht vertrouwen wordt nooit geschaad


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

De copy-constructor kan potentieel heel erg duur zijn omdat er buffers gealloceerd en gekopieerd moeten worden. De r-value reference is er helaas nog niet :)

[ Voor 3% gewijzigd door .oisyn op 12-04-2007 01:41 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Ja, maar dat is geen verschil. De new uit m'n eerste voorbeeld gebruikt ook de copy ctor. De efficiency is meer gelegen in je memory allocaties, maar daarom is het maar een klein verschil.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

De new uit je eerste voorbeeld gebruikt 1 (PdtFrame) copy ctor, terwijl je tweede voorbeeld er theFrames.size() gebruikt als theFrames.size() == theFrames.capacity() (en er dus een nieuwe buffer gealloceerd moet worden omdat dat extra element er niet bij past)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
vector != list

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

true, maar voor kleine collecties had ik begrepen dat een vector efficiënter was.

maar zoals ik al zei, omdat je 2 items gelinkt met elkaar wil opslaan, is een map wellicht handiger.

oprecht vertrouwen wordt nooit geschaad


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:04

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ai, daar ging het mis :). Dan heb ik niets gezegd.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Ik vraag me toch af waarom die school niet gewoon een camera kan uitlenen waar gewoon een behoorlijk videoprogramma bijzit om realtime op te nemen maargoed. Is dit soms een highspeed camera voor een speciaal experiment ofzo?

Ik kan wel een goede tip geven: de DirectX-SDK levert diverse goede kant en klare tools voor dit soort dingen. Je haalt gewoon de libs en headers van DX9 binnen in dat stuk code. Daarna werk je een voorbeeldje uit van MSDN bv.: http://msdn2.microsoft.com/en-us/library/ms779895.aspx

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Verwijderd schreef op vrijdag 13 april 2007 @ 02:27:
Ik vraag me toch af waarom die school niet gewoon een camera kan uitlenen waar gewoon een behoorlijk videoprogramma bijzit om realtime op te nemen maargoed. Is dit soms een highspeed camera voor een speciaal experiment ofzo?

Ik kan wel een goede tip geven: de DirectX-SDK levert diverse goede kant en klare tools voor dit soort dingen. Je haalt gewoon de libs en headers van DX9 binnen in dat stuk code. Daarna werk je een voorbeeldje uit van MSDN bv.: http://msdn2.microsoft.com/en-us/library/ms779895.aspx
Eerlijk gezegd vind ik DirectShow een regelrechte aanfluiting. Het filter dat je nodig zou hebben voor de frames uit een graph te halen, de SampleGrabber accepteerd maar enkele zeer specifieke inputformaten. Daarnaast gooit de standaard dvgrabber van DirectShow de beeldlijnen om, alsof het ntsc signaal is dat uit de camera komt. Dit heb ik alleen kunnen oplossen door de laatste alpha release van ffdshow te installeren en de DV-decoder daaruit te forceren. Zonder dit ziet het beeld eruit alsof het maar een kwart van de beeldlijnen heeft, tenzij je zelf een filter schrijft die de beeldlijnen weer omgooit... :/

Daarnaast vind ik het programmeren volgens de DirectShow manier met het ophalen van allerlei interfaces en filters aanroepen aan de hand van GUIID's enzo verschrikkelijk, maar dat is wellicht een persoonlijke frustratie.

oprecht vertrouwen wordt nooit geschaad


  • 0rbit
  • Registratie: Maart 2000
  • Laatst online: 18-03-2021
Om het nog verder te optimaliseren: Kun je die cam niet in RAW mode (of in een ander pseudo-native format) uitlezen? Of op zijn minst run length coding aanzetten? Dat gaat over het algemeen sneller dan eerst naar sRGB omzetten en dan opslaan.

Ik ben geheel voldaan, dank u wel!


  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
Verwijderd schreef op vrijdag 13 april 2007 @ 02:27:
Ik vraag me toch af waarom die school niet gewoon een camera kan uitlenen waar gewoon een behoorlijk videoprogramma bijzit om realtime op te nemen maargoed. Is dit soms een highspeed camera voor een speciaal experiment ofzo?
Je slaat de spijker op de kop :). Er is wel software voor maar die kostte 2500 euro per licentie en was ook nog eens enorm brak. Helaas is de leen-camera nu sinds vandaag weer weg. Het is niet gelukt om een goede sequence van beelden te capturen, ondanks jullie goede tips.
Pagina: 1