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

avi-Video Anzeige an Axes anpassen

 

Babs001

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2017, 19:46     Titel: avi-Video Anzeige an Axes anpassen
  Antworten mit Zitat      
Hallo alle zusammen,

ich suche jetzt schon eine Weile nach einer Lösung für mein Problem, habe aber leider noch nichts passendes dazu gefunden.

Ich binde in meine Gui ein Video (avi) ein. Das klappt so weit auch alles.
Das Problem ist jetzt nur, dass das Video nicht in die Größe meiner Axes erscheint, sondern viel Größer ist. Wenn man sich das beigefügte Bild anschaut, wird mein Problem vielleicht klarer...

Ich hab bei guide jetzt schon versucht an den Proberties der Axes rumzuspiele - leider ohne Erfolg. Ich hab auch schon über set versucht dem handles der axes eine Position mitzugeben, bzw die Screesize, allerdings hat das auch nicht funktioniert.

Wäre super, wenn vielleicht jemand einen Tip für mich hätte Smile

Gui.PNG
 Beschreibung:
Das Video sollte eigentlich kleiner in der unteren linken Ecke erscheinen - unter dem UiPanel "Auswertungspanel".

Download
 Dateiname:  Gui.PNG
 Dateigröße:  69.66 KB
 Heruntergeladen:  376 mal


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.01.2017, 15:34     Titel: Re: avi-Video Anzeige an Axes anpassen
  Antworten mit Zitat      
Hallo Babs001,

Bitte poste den Code, mit dem Du das Video apsielst.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Babs001

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2017, 16:51     Titel:
  Antworten mit Zitat      
Code:
function ReadVideo(handles)

handles.VideoFilename=uigetfile
vid = VideoReader(handles.VideoFilename, 'tag', 'myreader1');

     
      vidHeight=get(vid,'Height');
      vidWidth=get(vid,'Width');
     
      axPos=get(handles.VideoDisplay, 'OuterPosition');
      %axWidth=get(handles.VideoDisplay, 'OuterPosition([3,1])');
     
      axHeight=axPos([4]);
      axWeight=axPos([3]);
     
      reziseHeight=vidHeight/axHeight;
      reziseWidth=vidWidth/axWeight;
     
      %set(vid, 'Height',reziseHeight);
      %set(vid, 'Width', reziseWidth);

     
% % Read in all video frames.
      vidFrames = read(vid);
% % Get the number of frames.
      numFrames = get(vid, 'numberOfFrames');

      % Create a MATLAB movie struct from the video frames.
      for k = 1 : numFrames
            mov(k).cdata = vidFrames(:,:,:,k);
            mov(k).colormap = [];
      end

   
      movie(handles.VideoDisplay, mov, 1);
 
Babs001

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2017, 16:55     Titel:
  Antworten mit Zitat      
Mittlerweile weiss ich, dass ich ein Auflösungsproblem habe. Ich muss die uaflösung meines Videos einfach ändern.
Ich habe jetzt (wie in dem Code zu sehen ist) versucht Height und Width zu ändern. Leider hat der VideoReader nur eine Read Funktion, so dass ich die Auflösung nicht ändern kann...
 
Babs001

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2017, 16:08     Titel:
  Antworten mit Zitat      
So, hab jetzt doch alleine eine Lösung gefunden.
Mit dem folgenden Code bekommt man das ganze Video kleiner skaliert



Code:
function handles=ReadVideo(handles)

%laden des Videos
handles.VideoFilename=uigetfile
handles.vidObj = VideoReader(handles.VideoFilename, 'tag', 'myreader1');



vidWidth = handles.vidObj.Width; %länge des Videos
vidHeight = handles.vidObj.Height; %Breite des Videos


%Structuren anlegen
handles.mov = struct('cdata',zeros(vidHeight,vidWidth,3,'uint8'),...
    'colormap',[]);
handles.vid=struct('cdata',zeros(vidHeight,vidWidth,3,'uint8'),...
    'colormap',[]);


   
%Frame für Frame das Video abtasten
k = 1;
while hasFrame(handles.vidObj)
   
    handles.mov(k).cdata = readFrame(handles.vidObj);  %Speichern der einzelnen Frames in die mov Struktur
   img=frame2im(handles.mov(k));                % Frame in Bild umwandlen
   reImg =imresize(img, 0.5);           %Bildgröße ändern/runter Skalieren
   handles.vid(k)=im2frame(reImg);       %kleineres Bild wieder in Frame umwandeln
   
    k = k+1;
end

movie(handles.VideoDisplay, handles.vid, 1);
 
Neues Thema eröffnen Neue Antwort erstellen



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.