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

Video + Daten visualisieren mit Matlab

 

Balzer82
Forum-Anfänger

Forum-Anfänger



Beiträge: 26
Anmeldedatum: 22.02.11
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 28.09.2011, 22:28     Titel: Video + Daten visualisieren mit Matlab
  Antworten mit Zitat      
Hallo,
ich habe ein Blogeintrag zum Thema "wie überlagere ich ein Video mit irgendwelchen Daten (z.B. aus einer Excel Datei) und stelle das dann dar" geschrieben.





http://www.cbcity.de/datenvisualisierung-mit-matlab

Da ich selbst an einigen Punkten ewig gesessen habe, könnte es eventuell auch für andere Interessant sein.
    wie lade ich Videofiles >2GB
    wie speichere ich ab


Hier der Code:
Code:
clear all, close all, clc
%% Checken ob Videofunction installiert wurde von
% http://www.mathworks.com/matlabcentral/fileexchange/9901
check = exist('dxAviOpen');
if check == 0
    disp('Bitte DirectShow (DirectX) based AVI file reader laden:')
    disp('http://www.mathworks.com/matlabcentral/fileexchange/9901')
    disp('und diesen über addpath() oder pathtool einbinden')
    warndlg({'Bitte DirectShow (DirectX) based AVI file reader laden:';...
        'http://www.mathworks.com/matlabcentral/fileexchange/9901'})
    return
end

%% open data file
[filename,path] = uigetfile('*.xls', 'Load XLS File');

if (isequal(filename, 0))
   return;% cancel
end
data = xlsread(fullfile(path,filename));

%% Variablen Fahrdynamik
t   = data(:,1); %Zeit in s
v   = data(:,2); %Geschwindigkeit in km/h
ay  = data(:,3); %Querbeschleunigung in g
ax  = data(:,4); %Längsbeschleunigung in g
yaw = data(:,5); %Fahrtrichtung in Grad
vv  = data(:,6); %Vertical Speed in km/h
nu  = data(:,7); %Anzahl Satelitten
B   = data(:,8); %Breitengrad in min
L   = data(:,9); %Längengrad in min
s   = data(:,10);%Weg in m
R   = data(:,12);%Kurvenradius in m

%% Querbeschleunigung filtern
ayf = filter(ones(1,5)/5,1,ay);

%% open video file
[filename,path] = uigetfile('*.avi', 'Select uncompressed AVI File');

if (isequal(filename, 0))
   return; % cancel
end

file_avi = fullfile(path,filename);

% dxAviOpen ist eine Function von Matlabcentral
% http://www.mathworks.com/matlabcentral/fileexchange/9901
[avi_hdl, avi_inf] = dxAviOpen(file_avi);

fps = round(avi_inf.fps);
frames = avi_inf.NumFrames;

offset = -2.5; % Offset Video/Daten

%% Figure erzeugen
fig = figure(1);
set(fig,'Position',[100 100 avi_inf.Width avi_inf.Height],'MenuBar','none');
clf;
ax0 = axes('Position',[0 0 1 1]);

% dxAviReadMex ist eine Function von Matlabcentral
% http://www.mathworks.com/matlabcentral/fileexchange/9901
pixmap = dxAviReadMex(avi_hdl, 1);
pic = reshape(pixmap,[avi_inf.Height,avi_inf.Width,3])/256;
bild = image(pic);
axis off
daspect([1 1 1]);

% Geschwindigkeitsdummy vorbereiten
vh = text('Position',[0.5 0.1],'Units','normalized','String','0',...
    'Color','g','FontSize',32,'FontName',...
    'Tahoma','HorizontalAlignment','center');
text('Position',[0.5 0.04],'Units','normalized','String','km/h',...
    'Color','g','FontSize',10,'FontName',...
    'Tahoma','HorizontalAlignment','center');

% Querbeschleunigungsbar Dummy erzeugen (rechts)
axr = axes('Position',[0.6 0.05 0.38 0.05]);
aybarr = barh(0,0);
set(axr,'Color','none','YColor','k','XColor','w',...
    'XTick',[0.2 0.4 0.6 0.8 1.0 1.2 1.4],...
    'YTick',[-1 1.4],'XGrid','on','FontName','Tahoma');
xlim([0.1 1.4])

% Querbeschleunigungsbar Dummy erzeugen (links)
axl = axes('Position',[0.02 0.05 0.38 0.05]);
aybarl = barh(0,0);
set(axl,'Color','none','YColor','k','XColor','w',...
    'XTick',[-1.4 -1.2 -1.0 -0.8 -0.6 -0.4 -0.2],...
    'YTick',[-1 1.4],'XGrid','on','FontName','Tahoma');
xlim([-1.4 -0.1])

% Map hinterlegen vorbereiten
    % Index für eine Runde
    start = 4262;
    stop = 5594;
    axmap = axes('Position',[0.8 0.7 0.18 0.28]);
    line(B(start:stop),L(start:stop),'LineWidth',3,'color','black')
    axis([3091.68 3092.16 -836.2 -835.3])
    axis off

% Position Dummy erzeugen
    axpos = axes('Position',[0.8 0.7 0.18 0.28]);
    pos = line('XData',B(1),'YData',L(1),'LineWidth',1,'Marker',...
        'o','MarkerSize',10,'MarkerFaceColor','g');
    axis([3091.68 3092.16 -836.2 -835.3])
    axis off
   
%% Neues Video vorbereiten
k=0; % k ist der Zähler für die Outputvideodateien, wenn >2GB

new_mov = avifile(['GoProData' num2str(k) '.avi'],...
    'compression','none','quality',100,'fps',fps);

for i=1:frames %Frame für Frame abarbeiten
    clc
    disp([num2str(round(i*100/frames)) '% completed']) %Fortschritt
 
    zeit = i/fps + offset; % Zeitbezug herstellen

    % dxAviReadMex ist eine Function von Matlabcentral
    % http://www.mathworks.com/matlabcentral/fileexchange/9901
    pixmap = dxAviReadMex(avi_hdl, i);
    pic =  reshape(pixmap,[avi_inf.Height,avi_inf.Width,3])/256;
    set(bild,'CData',pic); % Bild aktualisieren
   
    index = find(t(:,1)<zeit,1,'last'); % Wert zum aktuellen Frame finden

    % Querbeschleunigung in Balken anzeigen
    if ayf(index)>0 %Linkskurve
        set(aybarr,'YData',ayf(index))
        set(aybarl,'Ydata',0)
    else
        set(aybarl,'YData',ayf(index))
        set(aybarr,'YData',0)
    end

    % Geschwindigkeit setzen
    set(vh,'String',num2str(round(v(index))));

    % Position setzen
    set(pos,'YData',L(index),'XData',B(index));

    drawnow

    new_mov = addframe(new_mov,getframe(fig));

    % 2 GB Dateigrößengrenze beachten
    s = dir(['GoProData' num2str(k) '.avi']);
    if s.bytes >= 2e9 % wenn > 2GB eine neue anlegen
        new_mov = close(new_mov);
        k=k+1;
        new_mov = avifile(['GoProData' num2str(k) '.avi'],...
            'compression','none','quality',100,'fps',fps);
    end
end

new_mov = close(new_mov); % File schließen
close all; % Figure schließen

_________________

"Bremsen ist die sinnlose Umwandlung von Exergie in Anergie - daran kann man sich höchstens noch die Finger verbrennen" - Prof. J. Morgenstern
Private Nachricht senden Benutzer-Profile anzeigen


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.