IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

aviobj - impossible de lire


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 71
    Points : 25
    Points
    25
    Par défaut aviobj - impossible de lire
    bonjour,
    j'essaie de créer une vidéo sous matlab mais je ne peux lire le fichier à la fin , il me met que le fichier est encore ouvert sous matlab , pourtant j'ai mis close à la fin. cela doit venir de mon code spécial.

    Habituellement , on voit souvent des boucles. Dans mon cas, je captures les images dans un "if"

    J'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    indice=1;
    if ( blabla )
    frame(indice) = getframe(gcf);
    indice = indice+1
    end
     
    aviobj = addframe(aviobj,frame);
    close(fig);
    aviobj=close(aviobj);
    Je regarde sur le workspace et j'ai bien le nombre de frame c'est à dire 9. Mais je peux pas lire la vidéo! une fois la dernière image affichée à l'écran , j'attends quelques secondes et je ferme la fenêtre et je regarde si je peux lire la vidéo qui est dans le répertoire et non , c'est encore ouvert sous matlab!

    QUand je faisais les vidéos dans une boucle for basique , je n'avais pas ce problème

    merci de votre aide

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 71
    Points : 25
    Points
    25
    Par défaut
    bon je viens de faire quelques tests :
    SI j’éteins tout et que je rallume et change le nom de la vidéo , deja le close(fig) marche ! dans mon premier message , j'ai marqué que je devais le ferme manuellement même avec close(fig) dans le code. Je peux ouvrir seulement la vidéo avec VLC mais y'a rien c'est tout noir pendant toute la vidéo. Je ne peux pas l'ouvrir avec windows media player. Alors qu'avant je pouvais....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    aviobj = avifile('C:\salut.avi','fps',3); 
    aviobj.Quality = 100; 
    aviobj.fps = 2;
    Je ne comprends plus riens ... apparemment matlab ferme les vidéo quand il veut bien..

  3. #3
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Montre nous l'ensemble de ton code.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 71
    Points : 25
    Points
    25
    Par défaut
    Jvais pas mettre tout le code , il est assez long et incompréhensible ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    indice=1;
    aviobj = avifile('C:\Users\Stan\Desktop\STAGE M2\ROTATION_trajec_coria3.avi','fps',3); 
    aviobj.Quality = 100; 
    aviobj.fps = 2;
    while(condition) %%% j'ai pas écris ma conditions sur le forum
    %% ICI CALCUL DE DISTANCE 
     pause(0.5)
       if (pointeur(j)~=ancien_pointeur1(:,:)) 
      fig = figure(12);
     set(fig,'Units','Normalized','Position',[0 0 1 1]);
      subplot(1,2,1)
    scatter(( x*pas)./K,(1024*pas - y*pas)./K,'blue','filled');  
    xlabel('x0(mm)');
    ylabel('y0(mm)');
    axis([0 1024*pas  0 1024*pas]);
      grid on;
      subplot(1,2,2)
      xx=[x(alpha_x) x(pointeur(j)) x(pointeur(j+1)) x(pointeur(j+2)) x(pointeur(j+3))];
      yy=[y(alpha_x) y(pointeur(j)) y(pointeur(j+1)) y(pointeur(j+2)) y(pointeur(j+3))];
      zz=[z(alpha_x) z(pointeur(j)) z(pointeur(j+1)) z(pointeur(j+2)) z(pointeur(j+3))];
      kk=[K(alpha_x) K(pointeur(j)) K(pointeur(j+1)) K(pointeur(j+2)) K(pointeur(j+3))];
      scatter(( xx*pas)./kk,(1024*pas-yy*pas)./kk,'red','filled');
    xlabel('x0(mm)');
    ylabel('y0(mm)');
    axis([0 1024*pas  0 1024*pas]);
    grid on;
     
    frame(indice) = getframe(gcf);
    indice=indice+1;
       end
     
     
     
    %% ICI incrémentation des variables
     
    end
    aviobj = addframe(aviobj,frame);
     
    close(fig);
    aviobj=close(aviobj);
    En fait je trace 5 points dont j'extrais les infos d'un fichier texte. Le problème c'est que par exemple il me trace 5 points puis 5 suivants et revient sur les 5 premier ( car dans le fichier texte c'est dans le désordre ) cela m'importe peu. Donc ma boucle if sert a filtrer ( si jamais c'est déjà tracé , tu ne le traces plus )

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Obtiens-tu le même comportement avec l'exemple de la documentation ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    aviobj = avifile('example.avi','compression','None');
     
    t = linspace(0,2.5*pi,40);
    fact = 10*sin(t);
    fig=figure;
    [x,y,z] = peaks;
    for k=1:length(fact)
        h = surf(x,y,fact(k)*z);
        axis([-3 3 -3 3 -80 80])
        axis off
        caxis([-90 90])
     
        F(k) = getframe(fig);
     
    end
    aviobj = addframe(aviobj,F);
    close(fig);
    aviobj = close(aviobj);
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 71
    Points : 25
    Points
    25
    Par défaut
    L'exemple marche niquel , je peux lire avec media player

    Je ne suis pas expert mais la boucle if à l'aire de ne pas poser de problème au getframe , j'ai compté 9 images et j'ai bien 9 éléments dans le la variable "frame"

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 71
    Points : 25
    Points
    25
    Par défaut
    J'ai trouvé !
    apparement il n'aime pas le plein écran :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    % set(fig,'Units','Normalized','Position',[0 0 1 1]);
    j'ai mis en commentaire et ca à l'air de marcher !

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/12/2005, 17h09
  2. [logiciel] ACDsee 7 : impossible de lire certaines images
    Par Eusebius dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 12/12/2005, 16h03
  3. Impossible de lire les enregistrements
    Par Bowen dans le forum ASP
    Réponses: 2
    Dernier message: 04/08/2005, 11h33
  4. impossible de lire 2 fois de suite un fichier
    Par porcher dans le forum C++
    Réponses: 8
    Dernier message: 14/02/2005, 01h44
  5. [VB.NET] Impossible de lire le contenu du datagrid
    Par jagdjg dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/05/2004, 21h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo