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!
eins vorweg, ich bin, was LabVIEW anbelangt, ein absoluter Neuling.
Nun zu meinem Problem. Ich habe ein vi erstellt, mit welchem ich die einzelnen frames eines videos einlese, die ich dann einer Kantendetektion mit diversen filtern unterziehe. Das Ergebnis wird dann parallel in 4 verschiedenen Fenstern ausgegeben, die zu- und wegschaltbar sind. Funktioniert soweit auch so, wie ich mir das vorstelle. Die für mich interessanten Teile der ca. 6 - 10min langen Videos befinden sich (meist, nicht immer) am Schluß. Da ich nun nie genau weiß, wo sich diese Stellen befinden, und ich nicht so lange warten will bis diese denn endlich kommen, dachte ich an einen Slider, mit dem ich im Video vor- und vor allem auch zuurückscrollen kann, ähnlich wie der des Media Players in Windows. Nun habe ich aber nur solche gefunden, die entweder Indikator sind ODER die ich zur Steuerung benutzen kann. Einen, der beides kann, wie im eben erwähnten Media Player, scheint's nicht zu geben, oder?
Zur Funktion des angehängten vi's: Beim Start wird ein Video (avi) eingelesen, die einzelnen Frames mittels individuell parametrierbarer Filter einer Kantendetektion unterzogen und das Original sowie die Ergebnisse der einzelnen Aktionen gleichzeitig in 4 verschiedenen Fenstern angezeigt. Diese liegen beim Programmstart übereinander, müssen also verschoben werden um sichtbar zu sein. Min den 4 On/Off-Buttons kann ich die Fenster ein- oder ausblenden, mit dem Pause-Button verbleibe ich beim aktuellen Frame. Im Pause-Modus kann ich die einzelnen Filterparameter verändern und sehe unmittelbar das Ergebnis. Die 4 Schieberegler beziehen sich auf die Parameter des Canny-Algorithmus', die voreingestellten Werte der beiden Matrizen sind die des Scharr-Operators in x- und y-Richtung, können aber auch beliebig verändert werden.
Wie gesagt, wichtig wäre für mich, daß ich (mittels slider oder ähnlichem) vor- und zurückscrollen kann, sowohl beim fortlaufenden Einlesen als auch im Pause-Modus.
1. Mittels Get Info Anzahl der Frames ausgelesen, die das Video besitzt
2. Slider Maximum Wert wird auf diese Anzahl gesetzt
3. EventCase wird ausgeführt sobald der Slider seinen Wert verrändert und erstellt ein entsprechend neues Bild
Ich bin zwar au' n Grünschnabel aber ich habe da ne Kleinigkeit ausprobiert, die eine eventuelle Lösung sein könnte.
Du verbindest die Anzeige des Frame-Nrs. (u. A.) mit dem Schleifenzähler.
Trenne diese Verbindung und verbinde deine Elemente mit einem Integer-Regler statt dessen..
Hat bei mir soeben geklappt.. Ich konnte vor- und zurückspulen...
Du müsstest dann noch herausfinden bis wohin der Regler drehen darf.. Rufst z.B. über den Regler Frame 2013 auf, obwohl es nur 600 Frames gibt.. ergibt das n Fehler.. Logischerweise..
Und vielleicht noch ein Wiedergabegeschwiendigkeitregler damit du auch zeit hast hin- und her zu spulen.
erstmal vielen Dank für eure Bemühungen. Leider kann ich die von euch erstellten vi's mit meiner Version (8.5.1) nicht öffnen. Gibt's denn keine Möglichkeit, die als 8.5er Version zu speichern? Will ungern eine aktuellere (unregistrierte) Version über meine registrierte ziehen...
So rein von dem was ich lese, scheint cabua's Lösungsvorschlag genau daß zu sein, wonach ich suche, hoff ich zumindest.
b_laudrup, ich versuche, deinen Lösungsvorschlag anhand der Bilder morgen (oder übermorgen, hab morgen 'nen strammen Tag), wenn ich dazu komme, in mein vi zu integrieren, heut abend isses mir zu spät
Kann man nicht mit einer einfachen if-Abfrage testen, ob das Frame überhaupt existiert, und falls nicht, zum letzten springen?
also ohne das VISION Toolkit zu besitzen sage ich mal... klar.
' schrieb:Kann man nicht mit einer einfachen if-Abfrage testen, ob das Frame überhaupt existiert, und falls nicht, zum letzten springen?
' schrieb:1. Mittels Get Info Anzahl der Frames ausgelesen, die das Video besitzt ... = max.Frame
Die Abfrage sollte aber in beide Richtungen aufgebaut werden.
So was in der Art:
min.Frame ist im Zweifelsfall 0 oder 1
[code]If Frame > max.Frame Then
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Für das Überprüfen und automatische Runden, ob der Werte in einen vorgegebenen Wertebereich fällt gibt es auf der Comparison (Vergleiche) -Palette ein eigenes VI (muss geeignet konfiguriert werden).
Zweckmäßigerweise würde man die Slides über Eigenschaftsknoten (Property Nodes) im Programm so einstellen, dass der Maximalwert gleich der maximalen Bildanzahl ist.
Über eine Ereignisschleife kann man reagieren, wenn der Benutzer den Schieberegler verstellt. Will man andersherum den Schieberegler vom Programm aus auf einen bestimmten Wert setzen, so kann man das mit einer lokalen Variable oder dem Eigenschaftsknoten "Wert" (Value) machen. Benutzt man Value(signl.) so wird auch noch das entsprechende Ereignis in der Ereignisschleife ausgeführt.
ist zwar schon 'ne Weile her, aber möchte das Thema doch nochmal aufgreifen. Hab, mit Hilfe cabua's Vorlage, mir ein vi erstellt, das genau das macht was ich möchte. Das hier beigefügte gibt das Video bzw. dessen Frames lediglich wieder, ich hab das natürlich in mein vi eingebettet um die einzelnen Frames weiter zu verarbeiten. Die "mit_Stop"-Version beendet die Ausführung des vi's beim letzten Frame, die "ohne_Stop"-Version führt die while-Schleife beim Erreichen des letzten Frames immer mit diesem letzten Frame aus, man kann den Slider also wieder zurück ziehen, auch beendet er die Ausführung nicht, falls man den Slider ganz nach rechts gezogen hat.