2017-05-23 3 views
1

Ich habe zuerst eine Figur erstellt, um Webcam-Bilder darauf zu streamen. Ich habe dann beim Streamen von der Webcam eine 3D-Achse auf die Figur erstellt. Beachten Sie, dass das Streaming der Webcam-Frames nicht innerhalb der 3D-Achsen erfolgt, sondern in der Abbildung selbst außerhalb der 3D-Achsen erfolgt. Das Problem ist, dass die Figur blinkt, wenn ich die Webcam aufgrund der uistack(ah,'bottom') Funktion streame. Ich brauche diese Funktion, um die 3D-Achsen ah vor dem Streaming-Figur-Hintergrund frame zu halten.Matlab - Figur blinkt weiter beim Streamen der Webcam

Wie Sie sehen können, verwende ich meine Webcam, um Äpfel zu streamen. Sie können auch sehen, dass die 3D-Achsen dank der Funktion uistack(ah,'bottom') vor dem Hintergrund sind. Wenn ich diese Funktion nicht verwende, sind die 3D-Achsen hinter dem Hintergrund verborgen.

enter image description here

% turn on webcam 
camList = webcamlist; 
cam = webcam(camList{1}); 

% stream webcam 
while(1) 
    frame = snapshot(cam); 
    ah = axes('unit','normalized','position',[0 0 1 1]); 
    imagesc(frame) 
    drawnow 
    set(ah,'handlevisibility','off','visible','off','Clipping','off') 
    uistack(ah,'bottom') 
end 

Antwort

0

löste ich das Problem.

Sie müssen zwei Achsen definieren: (i) einen für die Streaming-Bilder az und (ii) ein weiterer für das statische Bild ah außerhalb der Schleife. Platzieren Sie außerdem die uistack-Funktion außerhalb, da es redundant ist, das Programm zu informieren, ah über die az Achsen jeder Schleife zu halten.

camList = webcamlist; 
cam = webcam(camList{1}); 

hold on 
az = axes('unit','normalized','position',[0 0 1 1]); 
ah = axes('unit','normalized','position',[0 0 1 1]); 
uistack(ah,'top') 

while(1) 
    frame = snapshot(cam); 
    imagesc(az,frame) 
    drawnow 
end 
Verwandte Themen