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

Aufnahme eines Screenshots und Anzeige in Gui

 

Berrystudent
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 16.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2018, 10:48     Titel: Aufnahme eines Screenshots und Anzeige in Gui
  Antworten mit Zitat      
Hallo zusammen,

hab ein kleines Programm geschrieben das mir snapshots aufnehmen soll mithilfe einer Gui, ich komm allerdings bei der Playbutton programmierung nicht vorwärts.....
konkret: das Programm soll mit jeder Betätigung das video neu starten und die nachfolgenden Codezeilen ausführen (was genau gemacht werden soll steht unter Playbutton callback).
Meine Mainfunktion "TakingSnapshot soll aber solange weiterlaufen bis ich den exitbutton drücke.

Ich krieg es irgendwie nicht hin das umzusetzen, hat jmd vll eine Idee wie ich das realisieren kann?
Vielen Dank schon mal!!

Grüße

Dominik

Code:
function TakingSnapshot()

%===========
% laden der "webcam"
%===============
vid = videoinput('pointgrey', 1, 'F7_RGB_2048x1536_Mode0');
src = getselectedsource(vid);
%===============
%Eigenschaften der Klasse anzeigen und anpassen
%=============
get(src);
src.Brightness = 10;
src.Exposure = 0.90692;
src.Gain = 0;
src.Gamma = 1;
src.Hue = 0;
src.Saturation = 125;
src.Sharpness = 1536;
src.Shutter = 25.6301;
src.WhiteBalanceRB = [616 835];
vid.FramesPerTrigger = 200;
preview(vid);

%=========
% erstellen der Figure
%=============
[firstFig] = Figcreat();
    function [firstFig] = Figcreat()

           firstFig = figure('numbertitle', 'off', ...
               'name', 'Snapshot', ...
               'menubar','figure', ...
               'toolbar','figure', ...
               'resize', 'on', ...
               'renderer','painters', ...
               'position',[680 500 480 240],...
               'HandleVisibility','callback');
 end
%===============
% Buttons hinzufügen
%==============
insertButtons(firstFig, vid);

    function insertButtons(firstFig,vid)

        %Playbutton
        uicontrol(firstFig,'unit','pixel','style','pushbutton','string','Start',...
                'position',[10 10 75 25],'callback',...
                {@playCallback,vid});

        % Exit button
        uicontrol(firstFig,'unit','pixel','style','pushbutton','string','Exit',...
                'position',[100 10 50 25],'callback', ...
          {@exitCallback,firstFig});
    end
%==============
%Playbutton Callback
%===================


start(vid);

imgleft=getsnapshot(vid);
imshow(imgleft);


figure (3);
diff_im=imsubtract(imgleft(:,:,1), rgb2gray(imgleft));
imshow(diff_im);


diff_im=medfilt2(diff_im,[3 3]);
diff_im=im2bw(diff_im,0.18);
imshow (diff_im);

imshow(diff_im);
bw = bwlabel(diff_im,8);
stats = regionprops(bw,'BoundingBox','Centroid');

figure(4);
imshow(imgleft)

hold on

for object = 1:length(stats)
    bb = stats(object).BoundingBox;
    bc = stats(object).Centroid;
    rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
   
    plot(bc(1),bc(2));
c1={'X:',num2str(bc(1)),'Y:',num2str(bc(2))};
e=text(bc(1)+15,bc(2),c1);
set(e,'fontName','Arial','FontWeight','bold','FontSize',9,'Color','Yellow');
end
stop(vid);

%=============
% exitButton callback
%===================

function exitCallback(~,~,firstFig)
close(firstFig);
end
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.10.2018, 21:33     Titel: Re: Aufnahme eines Screenshots und Anzeige in Gui
  Antworten mit Zitat      
Hallo Berrystudent,

Mir ist noch nicht klar, was genau das Problem ist. Kannst Du das noch mal erklären? Was tut Dein Code bisher und was möchtest Du ändern?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Berrystudent
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 16.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2018, 23:42     Titel:
  Antworten mit Zitat      
Hallo Jan,

kurz gesagt es wird ein preview gestartet und per Pushbutton ein Screenshot erstellt, welcher mit einer Farbfilterung weiterverarbeitet wird.

Ich möchte also den Pushbutton mit der Screenshotfunktion verbinden und jedesmal wenn ich Ihn drück einen Screenshot erstellen.
Außerdem soll die Funktion nicht einfach beendet werden sobald ich einen screenshot erstellt hab sondern laufen bis ich den Exit-button drücke.
An sich nicht so schwer aber ich hab noch leichte Verständnisprobleme mit den Callbackfunktionen.


Viele Grüße

Dominik
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.10.2018, 11:24     Titel:
  Antworten mit Zitat      
Hallo Berrystudent,

Was bedeutet "die Funktion soll nicht einfach beendet werden"? Du hast ein GUI erstellt. Solange das nicht gelöscht wird, werden die Callbacks der enthaltenen Elemente aufgerufen, wenn sie betätigt werden.

Ich verstehe immer noch nicht, was genau Deine Frage ist. Was funktioniert noch nicht wie gewünscht?

Zitat:
An sich nicht so schwer aber ich hab noch leichte Verständnisprobleme mit den Callbackfunktionen.

Welches Details verstehst Du nicht?

Die hier ist seltsam:
Code:
[firstFig] = Figcreat();
    function [firstFig] = Figcreat()

           firstFig = figure('numbertitle', 'off', ...
               'name', 'Snapshot', ...
               'menubar','figure', ...
               'toolbar','figure', ...
               'resize', 'on', ...
               'renderer','painters', ...
               'position',[680 500 480 240],...
               'HandleVisibility','callback');
 end

Wozu eine Nested-Function aufrufen, die nur einen Befehl enthält? Einfacher:
Code:
firstFig = figure('numbertitle', 'off', ...
               'name', 'Snapshot', ...
               'menubar','figure', ...
               'toolbar','figure', ...
               'resize', 'on', ...
               'renderer','painters', ...
               'position',[680 500 480 240],...
               'HandleVisibility','callback');

Also einfach figure direkt aufrufen. das gleiche für den Code zum Erstellen der Buttons. Nun hast Du einen Callback für den Exit-Button, aber noch keine für den Snapshot.

Gruß, Jan
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.