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

ImageJ Java Discussion :

macros en image J


Sujet :

ImageJ Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut macros en image J
    bonjour à tous
    je suis une étudiante en imagerie et j'utilise récemment l'image J pour traiter des images .

    je voulais sélectionner la première image dans un stack contenant 862, j'ai utilisé set slice(1) mais je n'ai pas réussi .

    Pour plus expliquer j'ai une liste qui contient des n stacks d'images et je voulais sélectionner la première image du chaque stack tout le long de la liste, ma macro était

    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
    42
    43
    j = 1
    m = 0
     
    //Select folder containing stacks to process.
    input = getDirectory("Choose substack Directory");
     
     
    //Create output folder.
    File.makeDirectory(input+"\Concatenate");
    output = input+"\selection"
     
    Dialog.create("File type");
    Dialog.addString("File suffix: ", ".tif", 5);
    Dialog.show();
    suffix = Dialog.getString();
     
     
    // DETERMINE NUMBER OF .TIF FILES ("m")
    list = getFileList(input);
       for (i=0; i<list.length; i++)
    	if (endsWith(list[i], suffix)) 
    		m = m+1;
     
    setBatchMode(true);  
    list = getFileList(input);
       for (i=0; i<list.length; i++)
    	setSlice(1) {
    		processFile(input, output, list[i]);
    		j = j+1;
    		showProgress(j);
     
    }
     
    setBatchMode(false);
     
    function processFile(input, output, file) {
     
    	open(list[i]);
    	run("selection",+ " image1=" +list[i] );
    	saveAs("tiff", input+"\\selection \\"+ list[i]);
    	close();
    	}
    print(j+1, " substacks were concatenated 2 by 2 and are available in the folder: " + input+"\Concatenate");
    Merci pour votre aide

  2. #2
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2003
    Messages : 579
    Points : 845
    Points
    845
    Par défaut
    Bonjour,

    un petit détail tout d'abord : merci de préciser le message d'erreur qui apparait, cela permet de mieux comprendre ce qui peut ne pas marcher...

    Dans le script que tu proposes, j'ai l'impression que la commande "setSlice" est mal placee. Je la verrais plutot *apres* l'accolade, alors que là elle est avant... Du coup la syntaxe globale est curieuse, et c'est peut etre la raison du bug ?

    A++

  3. #3
    Membre régulier Avatar de Tchoukatroc
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    mai 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : Santé

    Informations forums :
    Inscription : mai 2014
    Messages : 83
    Points : 119
    Points
    119
    Par défaut
    Bonjour,

    Oui, envoie nous ton message d'erreur, ça sera plus facile de voir où est le problème. Je pense qu'il y a plusieurs erreurs. Déjà le setSlice qui n’est pas du bon coté de l'accolade comme l'a dit Kangourou, aussi tu n'utilises pas ta variable m une fois que tu as compté le nombre de tif, je pense que tu voulais l'utiliser dans la boucle for suivante. A la fin, je pense qu'il y a un problème avec cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    run("selection",+ " image1=" +list[i] );
    , je pense qu'il faudrait supprimer le + après la virgule. Tu as obtenu cette ligne du macro recorder? Quelle est cette fonction?

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut macros en image J
    Merci beaucoup pour votre réponse, j'ai modifie un petit peu dans le script mais toujours j'arrive pas à extraire les premières images de chaque stack, le message d'erreur est : " this command Requires a selection ".
    Mon script modifie :
    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
    m = 0
     
    //Select folder containing stacks to process.
    input = getDirectory("Choose substack Directory");
     
     
    //Create output folder.
    File.makeDirectory(input+"\Concatenate");
    output = input+"\Concatenate"
     
    Dialog.create("File type");
    Dialog.addString("File suffix: ", ".tif", 5);
    Dialog.show();
    suffix = Dialog.getString();
     
     
    // DETERMINE NUMBER OF .TIF FILES ("m")
    list = getFileList(input);
       for (i=0; i<list.length; i++)
    	if (endsWith(list[i], suffix)) 
    		m = m+1;
     
    setBatchMode(true);  
    list = getFileList(input);
       for (i=0; i<list.length; i=i + 1) {
    	 setSlice(1);
                        processFile(input, output, list[i]);
    }
     
    setBatchMode(false);
     
    function processFile(input, output, file) 
     
     
    	run("Selection...", "  title=" +list[i] );
    	saveAs("tiff", input+"\\Selection\\"+ list[i]);
    	close();

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut macros en image J
    concernant la commande + je l'utilise dans un autre script et ça marche sans aucune erreur mais je veux la modifier en tout cas , j'ai essayé d'écrire un autre script pour le même but mais malheureusement c par marcher, le message d'erreur était
    ';'expected in lin 38
    <run> (''Make Substack...", "Slices="+ slices) ;'
    le script est :
    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
    m = 0
     
    //Select folder containing stacks to process.
    input = getDirectory("Choose substack Directory");
    //Create output folder.
    File.makeDirectory(input+"\Concatenate");
    output = input+"\Concatenate"
     
    Dialog.create("File type");
    Dialog.addString("File suffix: ", ".tif", 5);
    Dialog.show();
    suffix = Dialog.getString();
     
     
    // DETERMINE NUMBER OF .TIF FILES ("m")
    list = getFileList(input);
       for (i=0; i<list.length; i++)
    	if (endsWith(list[i], suffix)) 
    		m = m+1;
    title=getTitle();
    selectWindow(title);
    run("Make Substack...", "  slices=1");
     
    title=getTitle();
    s = 1;
    while (s <= nSlices) {
      selectWindow(title);
      slices="+s+";
     run("Make Substack...", "  slices=" + slices);
      save(title + "-" + slices + ".tif");
      close();
      s ++;
    }

  6. #6
    Membre régulier Avatar de Tchoukatroc
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    mai 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : Santé

    Informations forums :
    Inscription : mai 2014
    Messages : 83
    Points : 119
    Points
    119
    Par défaut
    Bonjour,

    J'ai corrigé des trucs dans ta macro, maintenant, elle sauve la première image de chaque stack dans le dossier concatenate. Peux tu essayer pour voir si ça marche et si ça fait ce que tu veux?

    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
     
    m = 0
     
    //Select folder containing stacks to process.
    input = getDirectory("Choose substack Directory");
     
    //Create output folder.
    File.makeDirectory(input+ File.separator()+"Concatenate");
    output = input+ File.separator()+"Concatenate";
     
    Dialog.create("File type");
    Dialog.addString("File suffix: ", ".tif", 5);
    Dialog.show();
    suffix = Dialog.getString();
     
    setBatchMode(true);
    list = getFileList(input);
    for (i=0; i<list.length; i++) 
    {
    	if (endsWith(list[i], suffix))
    	{
    		m++;
    		open(input+list[i]);
    		Stack.setFrame(1);
    		processFile(output, list[i]);
    		close();
    	}
    }
     
    setBatchMode(false);
     
    function processFile(output, file)
    {
    	run("Duplicate...", " ");
    	saveAs("tiff", output+File.separator()+"Selection"+ list[i]);
    	close(); 
    }

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut macros en image J
    bonjour ,
    Merci beaucoup pour ton temps et ta reponse
    j'ai essaye la macro que vous m'avez transmis , un message d'exception (ci-joint apparait) sans rien obtenir

    merci,
    Images attachées Images attachées  

  8. #8
    Membre régulier Avatar de Tchoukatroc
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    mai 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : Santé

    Informations forums :
    Inscription : mai 2014
    Messages : 83
    Points : 119
    Points
    119
    Par défaut
    Combien pèsent tes stacks? Peux tu les ouvrir avec imageJ? Ce message me fait penser que imageJ n'a pas assez de mémoire pour travailler, mais je ne vois pas la fin du message d'erreur sur ta capture d'écran.

  9. #9
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut macros en image J
    bonjour
    Merci beaucoup , j'ai ressayé votre script et il a bien marché, c'est exactement ce que je voulais . j'ai juste une question et ce que je peux utiliser la même macro pour sélectionner des channels, étant donné que j'obtiens des stacks qui contiennent des images dans cet ordre (GREEN/BLUE/VISIBLE) et je veux sélectionner les verts à part et les bleues à part . En principe je pense c'est la même idée n'est ce pas .
    Encore une fois merci beaucoup pour votre aide, j'étais bloquée pour quelques jours pour réaliser cette macro

  10. #10
    Membre régulier Avatar de Tchoukatroc
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    mai 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : Santé

    Informations forums :
    Inscription : mai 2014
    Messages : 83
    Points : 119
    Points
    119
    Par défaut
    Super que ça marche. Oui, tu peux faire ça pour les channels aussi. Tu peux par exemple rajouter une boucle for dans ta fonction processFile. Si tes channels sont toujours dans le même ordre, tu peux faire une boucle qui va jusqu'à deux, et tu sélectionnes ton channel grâce à la fonction Stack.setChannel(n). Il faut penser à donner des noms différents pour tes deux channels quand tu sauvegardes tes images, pour éviter que la seconde n'écrase la première.
    Recontactes moi si tu n'y arrive pas.

  11. #11
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut macros en image J
    ah oui j'ai compris ce que tu viens me dire je veux faire cela merci beaucoup, mais juste une autre question j'avais besoin du slice 219 parmi les steaks image donc j'ai applique ta macro mais en modifiant Stack.setFrame(219) [au lieu de 1 ] la macro marche mais toujours en sélectionnant la première image et non pas le slice Desiree ce que je comprends pas, est ce que la substitution ne suffit pas faut-il ajouter d'autres commandes ?

    mercii beaucoup d'avance

  12. #12
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut macros en image J
    c'est bon j'ai utilisé la commande setSlice (219) au lieu de Stack.setFrame(219) et c 'est bien marché . Encore une fois merci beaucoup pour ton temps et ton aide , je veux suivre vos conseils pour effectuer la macros des selection des channels et je vous la montre pour obtenir votre avis ,merci

  13. #13
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut macros en image J
    Bonjour à tous,

    j’ai un petit souci et j’ai besoin de votre avis, en fait j’ai des fichiers(correspond à des différentes positions) qui contiennent des images individuelles telles que chaque image correspond à un Channel ( par exemple :
    position 1 : img_Channel 000 (vert)
    img_ Channel001 (bleus)
    img_Channel 002 (visible) )

    je voulais sélectionner les images afin d’obtenir un fichier qui contient tous les images vertes et un autre que les images bleues, j’ai utilise le même script que vous m’avez transmis la fois dernière mais en modifiant quelque commande mais ça par marche et même par un message d’erreur apparaît juste je vois marque sur image j ‘ Angel tool ‘ : le script est :
    [CODE]
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    m = 0
     
     k=getNumber("number of the image to be selected", 2);
     
    s = getString("Enter the file name:", s);
     
    //Select folder containing stacks to process.
     
    input = getDirectory("Choose substack Directory");
     
     
     
    //Create output folder.
     
    File.makeDirectory(input+ File.separator()+s);
     
    output = input+ File.separator()+s;
     
     
     
    Dialog.create("File type");
     
    Dialog.addString("File suffix: ", ".tif", 5);
     
    Dialog.show();
     
    suffix = Dialog.getString();
     
     
     
    setBatchMode(true);
     
    list = getFileList(input);
     
    for (i=0; i<list.length; i++) 
     
    { 
     
    	if (endsWith(list[i], suffix))
     
    	{
     
    		m++;
     
    		open(input+list[i]);
     
    		selectImage(k);
     
    		processFile(output, list[i]);
     
    		close();
     
    	}
     
    }
     
     
     
    setBatchMode(false);
     
     
     
    function processFile(output, file)
     
    {
     
    	run("Duplicate...", " ");
     
    	saveAs("tiff", output+File.separator()+s+ list[i]);
     
    	close(); 
     
    }
    Merci d'avance , Bonne journée

Discussions similaires

  1. [PPT-2010] Macro Insertion Image depuis Excel
    Par fidecourt dans le forum VBA PowerPoint
    Réponses: 4
    Dernier message: 18/01/2011, 18h08
  2. [PPT-2003] Macro colle images
    Par manulemalin13000 dans le forum VBA PowerPoint
    Réponses: 20
    Dernier message: 26/04/2010, 09h16
  3. Macro pour Image
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/08/2007, 14h30
  4. [VBA-E] Macro Insertion image
    Par dafalri dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2006, 17h20
  5. Appliquer une macro à une image
    Par erwan99 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/04/2006, 14h50

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