WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Bilder erstellen aus eingelesenen Videos?

 

Matlab_Fan

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.09.2010, 23:38     Titel: Bilder erstellen aus eingelesenen Videos?
  Antworten mit Zitat      
Hallo,

ich will in Matlab folgendes machen:

Vorliegen habe ich:

Mehrere videos in einem ordner. In diesen Videos kommt jede 5 sekunde ein neues Bild, als wie wenn man Urlaubsfotos nacheinander zusammgestellt hätte.

Was ich will:

1. Video einlesen und starten.
2. Video sofort Stoppen, das Bild nach definierter Breite und Höhe zuschneiden, abspeichern.
3. Viedeo wieder starten und nach 5 sekunden stoppen und nächste Bild zuschneiden und abspeichern.
4. ggf diese in eine Powerpoint Präsentation zusammenführen (muss aber nicht sein)


Habe nun viele Foren durchsucht, aber leider nix dazu gefunden. Kann mir jemand helfen?


Bin dankbar für jede info.


lg


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 12.09.2010, 13:52     Titel:
  Antworten mit Zitat      
Also das geht auf jeden Fall alles mittels MATLAB. Ich bin mir nicht sicher, ober nach der Beschreibung das "abspielen" überhaupt nötig ist. Ich stelle mir das so vor:

1. Einlesen über AVIREAD - oder ist es ein anderes Videoformat? Bei grossen Video ist es vielleicht nötig nur Teile einzulesen, auszuwerten und so weiter.

2. AVIFILE gibt u.a. Informationen zur Framerate. daduch kann man errechnen welches Frame nach jeweils 5 Sekunden dran ist.

3. Die über AVIREAD eigelesene Bildmatrix dieses Frames kann über ganz einfache Matrixoperationen zugeschnitten werden A=A(1:10,5:20);

4. Diese neuen Bilder können über PRINT oder andere Befehle als Bilddateien abgespeichert werden. Wg. PowerPoint: CLIPBOARD fällt mir da ein, oder ActiveX Befehle. Ist aber nicht mein Spezialgebiet.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Thomas_74
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 06.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2010, 11:08     Titel:
  Antworten mit Zitat      
Hi,

kann man denn ein avi nicht nur schrittchenweise laden sondern auch wieder speichern?

CU Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlab_Fan

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2010, 22:14     Titel:
  Antworten mit Zitat      
Hallo Andreas Goser,

kannst du mir vieleicht kurz ein programmbeispiel vorzeigen bitte?

Also die Videos liegen jeweils in verschiedenen Ordnern, z.b Ordner1, Ordner2 etc.


Wäre dankbar für jede Info.


Viele Grüße
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 22.09.2010, 21:23     Titel:
  Antworten mit Zitat      
Ich/wir hier im Forum sind gerne bereit zu helfen wenn jemand bei der Umsetzung nicht vorankommt, also Fehlermeldungen oder unerwartete Ergebnisse hat.

Ich persönlich möchte keine Programmbeispiele erstellen.

Also, sind es AVIs? Sollen alle Dateien in einem Ordner gelesen werden? Sollen welche manuell gewählt werden oder aufgrund irgendeiner Logik des Namens?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Matlab_Fan

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2010, 11:20     Titel:
  Antworten mit Zitat      
Hallo Andreas,

es sind AVI's.

Die Daten liegen in dieser Reihenfolge:

Ordner 1
Ordner 2
Ordner 3

In jedem der Ordner sind 5 Videos und 5 .txt-files. von den 5 Video-files sollen immer nur 2 genommen werden mit einer bestimmten Endung.
Z.B Video_a und Video_c .

Mein Vorhaben:

1. Ordner 1 öffnen
2. Video_a öffnen
3. sofort stoppen und das Bild ausschneiden.
4. kurz wieder abspielen lassen und nach 5 sekunden wieder stoppen und wieder das bild ausschneiden.
5. Video_a schließen
6. Video_b öffnen und so vorgehen wie bei Video_a

7.Ordner 2 öffnen
8. Video_a öffnen usw.
.
.
.
.
.
.
.


Hoffe ihr könnt mir jetzt besser weiter helfen.

lg
 
Matlab_Fan

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2010, 17:41     Titel:
  Antworten mit Zitat      
Hallo,

ich habe nun mal versucht selber Videos einzulesen, aber es kommt immer der folgende Fehler:

Error in ==> aviread at 49
info = aviinfo(filename,'Robust');



??


lg
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 05.10.2010, 09:01     Titel:
  Antworten mit Zitat      
Merkwürdig. Was passiert denn bei

Code:

a=aviread('mandel.avi')
 


und angehängtem AVI?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 05.10.2010, 09:03     Titel:
  Antworten mit Zitat      
Anhang - umbenennen in AVI bitte.

mandel.mdl
 Beschreibung:

Download
 Dateiname:  mandel.mdl
 Dateigröße:  221.5 KB
 Heruntergeladen:  743 mal
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Matlab_Fan

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2010, 09:27     Titel:
  Antworten mit Zitat      
Hallo Andreas,

nun läuft es:-). Das Problem war, dass das Video nicht im Current Directory lag.



ich habe die ja in meinem vorletzten Beitrag geschrieben wie ich vorgehen will, kannst du mir vielleicht dazu noch ein paar Tipps geben.

lg
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 05.10.2010, 10:01     Titel:
  Antworten mit Zitat      
Ja gerne. Ich glaube es liegt noch das Missverständnis vor, dass man das Video starten muss. Ich schlage folgendes vor:

Code:

in=aviinfo('mandel.avi');
FPS=in.FramesPerSecond;

FRA=aviread('mandel.avi');

FRA(1).cdata; % Das sind die Daten des ersten Frames
FRA(FPS).cdata; % Frame nach einer Sekunde
 


Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Matlab_Fan

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2010, 13:38     Titel:
  Antworten mit Zitat      
Hallo Andreas,

ok nun wird das Video eingelesen. So nun möchte ich z.b das 1. Bild, das ja 5 sek. andauert auslesen und anzeigen lassen ggf. speichern.


Somit müsste ich doch erstmal:

frame2im anwenden oder?

Und warum die Zeile:

FRA(FPS)....
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 05.10.2010, 15:02     Titel:
  Antworten mit Zitat      
Also...

Das erste Bild ist das erste Frame. Das sind die eingelesenen Daten "FRA(1).cdata"

Die folgenden Frames sind erstmal unwichtig, bis auf das Frame das nach 5 s dran ist. Bei 15 Frames per Second wie in meinem Beispiel braucht man also 5*15=75 Frames In meinem Codebeispiel ist es nur ein Sekunde weil mein AVI ja nicht viel länger ist...

FRAME2IM? Ja klar, warum nicht. Es hängt jetzt davon ab was genau gewünscht ist beim Thema "Bild speichern", also Bildinformationen (FRA(1).cdata) oder ein Screenshot als JPG, etc.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Matlab_Fan

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2010, 16:46     Titel:
  Antworten mit Zitat      
Hallo Andreas,

ok jetzt hab ich es verstanden.

Also du hast es schonrichtig geschrieben.

1. Video anhalten und Screenshot
2. Weiterspielen lassen bis 10s.
3. Anhalten und Screenshot.

diese natürlich speichern in einem Ordner.

4. Nächstes Video öffnen
.
.
.
.
..

Und dann nächster Ordner und so weiter..
 
Matlab_Fan

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2010, 23:25     Titel:
  Antworten mit Zitat      
Hallo Andreas,

habe mich nun intensiv damit beschäftigt und auch im Internet was gefunden. Also mein erstes Ergebnis:

Code:
videoobj=mmreader('Sprint.avi');
vidFrames=read(videoobj,[1 31]);
for k=1:31;
mov(k).cdata=vidFrames(:,:,:,k);
mov(k).colormap=[];
end;
movie(mov,1,1);
 


Was ich nicht verstehe ist:

Code:

mov(k).cdata=vidFrames(:,:,:,k);
mov(k).colormap=[];
 


1. Warum bzw. wofür vidFrames(:,:,:,k);
--> warum so viele Doppelpunkte und das k am Ende?

2.Warum bzw. wofür mov(k).colormap=[];
--Y warum nur [] am ende???

wenn du mir noch hierbei helfen könntest, dann wäre ich dir sehr dankbar und würde dann mit hoher Motivation weiter arbeiten.

Danke im voraus.


lg
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.