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 Bearbeitung

 

VideoANA

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2014, 09:27     Titel: Video Bearbeitung
  Antworten mit Zitat      
Hallo,
ich hatte mal vor jahren diesen Code im Netz gefunden.
Der Code verbindet ein AVI Video mit aufgezeichneten Daten.

Z.B. Filmt man die Fahrlinie eines Rennfahrzeugs und zeichnet zusätzlich alles auf was der Fahrer macht (Lenken, Bremsen etc.)

Diese sollte man dann mit dem Code übereinander legen können.
Ein Vorschau Bild wie es am ende aussehen soll findet ihr im Anhang.

Leider kann ich in dem AddIN 'dxAviOpen' die Avi Datei nicht öffnen.

Das AddIn findet ihr unter
http://www.mathworks.com/matlabcent.....tx--based-avi-file-reader

Ausserdem liegt es mit allen nötigen Daten hier im Anhang.


Ich hoffe mir kann einer von euch helfen.




Code:



%% 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
 

%% 2.  Excel Datei öffnen und in Workspace laden


%% 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 Satelliten
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);
 

%% 3. Videodatei mit Matlab einlesen



%% open video file
[filename,path] = uigetfile('*.avi', 'Select 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
 

%% 4. Figure erzeugen worin Bilder + Daten angezeigt werden


%% 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]);
 

%% 5. Dummys der Datenvisualisierungen erstellen



% 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
 

%% 6. Videoframes einlesen, Daten darüber legen und abspeichern

%% 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
 

 


2011-09-25-M3-Eurospeedway-Data.xls
 Beschreibung:
Die Daten

Download
 Dateiname:  2011-09-25-M3-Eurospeedway-Data.xls
 Dateigröße:  2.27 MB
 Heruntergeladen:  2746 mal
dxAvi.zip
 Beschreibung:
AddIn zum öffnen von AVI Videos

Download
 Dateiname:  dxAvi.zip
 Dateigröße:  49.25 KB
 Heruntergeladen:  299 mal
Vorschau.jpg
 Beschreibung:
So sollte das Ergebnis aussehen.

Download
 Dateiname:  Vorschau.jpg
 Dateigröße:  24.71 KB
 Heruntergeladen:  212 mal


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 - 2025 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.