Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich würde gerne mit meiner GIGe Kamera *.avis aufnehmen und gleichzeitig überprüfen, ob ich Verlust an Bildern habe. Ich bin nun so vorgegangen, dass ich das Beispiel "grab and detect skipped buffers" dahingehend adaptiert habe, dass ich gleichzeitig ein *.avi aufzeichne. Problem ist nur, dass ich schon bei geringen Bildraten, Bilder verliere. Kann mir jemand einen clevereren Weg sagen, wie man das realisieren kann, oder hat jemand ein Beispiel? Ich habe Dinge über "Consumer/Producer"-Strukturen gelesen, oder über die Möglichkeit die Bilder erst in einer Matrix abzulegen und sie am Ende der Aufnahme erst in *.avi zu konvertieren.
Ein stream der Bilder (LV) und auch das Aufnehmen von *.avis (Fremdsoftware) geht, d.h. für mich, dass es nicht an der Hardware liegt.
Hat jemand Rat? Ich wäre zu tiefst verbunden.
Liebe Grüße
Philipp
Anzeige
10.10.2012, 07:51 (Dieser Beitrag wurde zuletzt bearbeitet: 10.10.2012 07:55 von Kasi.)
Consumer/Producer ist da auf jeden Fall eine gute Idee, damit die Abholung der Bilder nicht auf die Prozessierung warten muss.
Ich hab das Template, das du unter "new..." finden kannst, mal mit ein paar Modifikationen (hellblau) für deine Anwendung kommentiert.
Insgesamt wird das dann bei längerer Laufzeit zu einer Auffüllung der Queue führen. Wenn du das Programm dann also über den "Stop"-Button stoppst, sollte es noch eine ganze Weile weiterlaufen, bis es die Queue komplett abgearbeitet hat wird die Queue-Referenz gelöscht und somit auf der Consumer-Loop unten abgebrochen. Dein Avi enthält dann nur die Bilder, die bis zum Abbruch prozessiert werden konnten, der Rest geht verloren (oder kann noch nachträglich über die "remaining elements" der Release Queue Function oben rechts prozessiert werden).
If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
Hi Philipp
Mal eine Frage:
Hast Du die Kamera auch wirklich über eine GBit-Verbindung angeschlossen? Oder nur über ein 100MBit Leitung?
Falls letzteres der Fall sein sollte, solltest Du in den Kameraeigenschaften im MAX die maximale nutzbare Bandbeite einschänken. (Wie die Eigenschaft genau heisst, wies ich jetzt nicht auswendig. Du wirst es schon finden.) Damit kannst Du den Verlust von Daten verhindern, solange die erforderliche Bildrate und -größe das erlaubt.
Vielen dank für Deinen Tip. Ich werde mich daran versuchen. Wenn ich also einen genügend langen Nachlauf garantieren kann, dann sollte ich auf dem *.avi alles an Information finden. Mein Problem mit der Queue ist, dass die doch gehalten werden muss. Das wird dann im RAM geschehen, wenn der jetzt aber limitiert ist, dann begrenzt das automatisch meine Länge des *.avis, oder? Da ich im Moment mit der 32bit Version arbeite, komme ich dann nicht so weit..
@BNT
Vielen Dank, dass Du Deine Bedenken äußerst. Ich verwende eine mitgelieferte Schnittstelle, die zwar an PCIe 1.0 angeschlossen ist, jedoch trotzdem in der Lage sein sollte die Daten raus zu schaufeln. Wie gesagt, mit der mitgelieferten Software geht es ja ohne Verlust. Die würde ich aber nur gerne umgehen, da der restliche Aufbau schon unter LV läuft.
Kann es an der 32bit Version von LV liegen? Wie sieht es aus mit Vision unter 64 bit? Wie sieht es allgemein mit LV 64 bit aus? Manche Pakete gibt es unter 32 und manche auch unter 64. Ich verwende teilweise auch noch *.vis aus der openg library. Kann es da zu Konflikten kommen?
Liebe Grüße und danke für eure Unterstützung
Philipp
10.10.2012, 09:03 (Dieser Beitrag wurde zuletzt bearbeitet: 10.10.2012 09:05 von Kasi.)
Vielleicht kann deine AVI-Software ja auch ein bisschen mehr, als immer nur Einzelbilder hinzufügen? Dann könntest du im Consumer immer die komplette Queue leerräumen (-> flush queue) und die komplette angestaute Bildserie zum Avi hinzufügen, ohne dass sich die Queue mit der Zeit immer weiter auffüllt.
If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
Meine avi-Software kann mit großer Wahrscheinlichkeit mehr. Wie meinst Du das, dass ich die Queue leerräumen kann? Das doch nicht im Prozess des Aufnehmens, oder? Mit welcher Geschwindigkeit wird denn aus der Queue geschrieben, oder läuft die Queue voll, bis ich beende und dann wird erst geschrieben?
Danke!
10.10.2012, 10:00 (Dieser Beitrag wurde zuletzt bearbeitet: 10.10.2012 10:01 von Kasi.)
Richtig, das hat nichts mit dem Aufnehmen zu tun.
Die Queue wird im Producer-Loop oben mit jeden Schleifendurchlauf mit einem weiteren Element gefüttert. Die Geschwindigkeit, in der das geschieht, wird allein durch das "Kamera auslesen"-vi bestimmt (das "wait" im Template würde ich dann rausschmeißen).
Statt dann im Consumer-Loop (unten) einzeln die Elemente aus dem Queue-Ende zu entnehmen, kannst du auch einfach alle vorhandenen Elemente aus der Queue in einem Schleifendurchlauf rausnehmen. Dem Producer-Loop ist das egal, der schreibt weiter seine Elemente in die (dann kurzfristig komplett leere) Queue.
Alles klar? Nein? Warte, ich verdeutliche es nochmal in einem Bild
If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
Ja, das ist etwas tiefer in der Hierarchie versteckt, entschuldige den knappen Hinweis:
File -> New.. -> From Template -> Framworks -> Design Patterns -> Prod/Cons Design Pattern (Data)
Oder du speicherst das von mir im alten Beitrag angehängte Snippet einfach auf deiner Festplatte und ziehst es per Drag-n-Drop in dein Blockdiagramm.
If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)