MATLAB getframe capte tout ce qui est sur l'écran
Je suis en train de créer un film à partir de mon MATLAB de la parcelle. Quand je l'appelle getframe, "généralement", saisit le tracé de l'image, mais parfois, s'il ya quelque chose d'autre actives sur l'écran (ce qui est normal si je continue à utiliser l'ordinateur), il capte quelle que soit la fenêtre active. Est-il une autre façon de saisir l'image du personnage actif?
par exemple
fig = figure;
aviobj = avifile('sample.avi','compression','None');
for i=1:t
clf(fig);
plot(...); % some arbitrary plotting
hold on;
plot(...); % some other arbitrary plotting
axis([0 50 0 50]);
aviobj = addframe(aviobj, getframe(fig));
end
aviobj = close(aviobj);
Est-ce que sur Windows? Êtes-vous en faisant une sorte de complexe de traçage, comme la transparence des patchs ou autres graphismes détaillés qui pourraient être à l'aide de rendu OpenGL?
oui, c'est windows et pas de, pas compliqué graphiques. est-il étrange que je suis le seul à voir cela? j'ai aussi couru dans le même problème dans deux fenêtres différentes boîtes, mais que de temps il a été ok pour laisser les ordinateurs exécutant et de s'en aller, donc on n'a pas beaucoup de soins
question connexe: Rendre MATLAB figure dans la mémoire
oui, c'est windows et pas de, pas compliqué graphiques. est-il étrange que je suis le seul à voir cela? j'ai aussi couru dans le même problème dans deux fenêtres différentes boîtes, mais que de temps il a été ok pour laisser les ordinateurs exécutant et de s'en aller, donc on n'a pas beaucoup de soins
question connexe: Rendre MATLAB figure dans la mémoire
OriginalL'auteur paul simmons | 2011-12-19
Vous devez vous connecter pour publier un commentaire.
OK, trouvé la solution; au lieu de
l'envoi de la figure de la poignée directement à addframe est assez:
OriginalL'auteur paul simmons
L'Matlab les gens sont apparemment la suppression progressive de la avifile et addframe fonctions dans les versions futures, en les remplaçant par VideoWriter et writeVideo respectivement. Malheureusement, cela signifie que l'on a accepté la réponse ne fonctionne plus, depuis writeVideo n'accepte pas la figure la poignée de l'argument.
J'ai joué un peu avec elle un peu, et pour référence, la même chose peut être accompli en utilisant les sans-papiers papier de la fonction. Le code suivant fonctionne parfaitement pour moi, avec l'avantage supplémentaire de ne pas même avoir une parcelle de la fenêtre pop-up, de sorte qu'il n'est tout totalement en arrière-plan:
OriginalL'auteur A Blue Shoe
Vous pouvez passer à la poignée, de la figure ou de l'axe de GETFRAME pour s'assurer qu'il n'est pas capturer une autre fenêtre.
Pouvez-vous ajouter un exemple de code montrant ce que vous faites?
ajout d'un exemple de code. en dehors de la parcelle(..) il est exact que le copier/coller...
OriginalL'auteur gnovice
Je peut dépendre sur le moteur de rendu que vous utilisez. Si c'est
'painters'
, alors vous devriez être OK, mais si c'est autre chose, comme'OpenGL'
, alors je pense qu'il doit obtenir les données de la trame de la carte graphique, ce qui signifie que si vous avez quelque chose qui se chevauchent de la fenêtre, alors qu'il est possible que dans la sortie degetframe
.Êtes-vous à l'aide de
gcf
oufig
lors du passage de la poignée? C'estfig
dans la question, maisgcf
dans votre commentaire.eh bien, gcf est en fait une fonction pour "Obtenir le Chiffre Actuel" et il retourne fig dans mon cas
Oui, mais si, pour quelque raison que ce soit une autre figure d'ailleurs
fig
devient la figure tout en faisant de votre film, puisgcf
sera reportez-vous à la place.OriginalL'auteur Nzbuu
Comme quelqu'un l'a déjà dit, vous n'avez pas à utiliser getframe, cependant, si vous insistez sur l'utilisant, vous pouvez utiliser
et cela devrait résoudre votre problème.
Ouais, il ne semble pas fonctionner.
OriginalL'auteur erichlf
Si vous utilisez
getframe
dans de nombreuses sous-intrigues, essayez d'ajouter à la fin:Je pense que le obtenir de l'image fonctionne très bien juste le rendu un peu a unpositioned.
OriginalL'auteur shalti