<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Commentaires sur : Utiliser ImageJ dans un notebook Sage, un exemple d&#039;appel de Java depuis Python</title>
	<atom:link href="http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/feed/" rel="self" type="application/rss+xml" />
	<link>http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/</link>
	<description>Blog d'opinions et de réflexions sur le traitement d'images et autres sujets plus ou moins connexes (par Frédéric Morain-Nicolier)</description>
	<lastBuildDate>Wed, 07 Mar 2012 16:25:59 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<item>
		<title>Par : Carte de Dissimilarités locales &#8211; implémentation de référence</title>
		<link>http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/comment-page-1/#comment-2130</link>
		<dc:creator>Carte de Dissimilarités locales &#8211; implémentation de référence</dc:creator>
		<pubDate>Thu, 08 Jul 2010 13:17:37 +0000</pubDate>
		<guid isPermaLink="false">http://pixel-shaker.fr/fr/?p=836#comment-2130</guid>
		<description>&lt;p&gt;[...] (en ligne de commande) java consistant en un fichier jar. L&#8217;autre est un workspace sage. J&#8217;ai également ajouté des exemples illustrant l&#8217;intérêt de la [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] (en ligne de commande) java consistant en un fichier jar. L&#8217;autre est un workspace sage. J&#8217;ai également ajouté des exemples illustrant l&#8217;intérêt de la [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>Par : fmn</title>
		<link>http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/comment-page-1/#comment-1089</link>
		<dc:creator>fmn</dc:creator>
		<pubDate>Wed, 03 Feb 2010 07:53:44 +0000</pubDate>
		<guid isPermaLink="false">http://pixel-shaker.fr/fr/?p=836#comment-1089</guid>
		<description>&lt;p&gt;Après quelques discussions avec des collègues, ce genre de transfert est bien le point faible de JNI. Si j&#039;ai le temps, je regarderais les performances de &lt;a href=&quot;https://jna.dev.java.net/#features&quot; rel=&quot;nofollow&quot;&gt;JNA &lt;/a&gt;qui indique : &lt;em&gt;Java array and NIO Buffer arguments (primitive types and pointers) as pointer-to-buffer&lt;/em&gt;. 
A voir.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Après quelques discussions avec des collègues, ce genre de transfert est bien le point faible de JNI. Si j'ai le temps, je regarderais les performances de <a href="https://jna.dev.java.net/#features" rel="nofollow">JNA </a>qui indique : <em>Java array and NIO Buffer arguments (primitive types and pointers) as pointer-to-buffer</em>. 
A voir.</p>]]></content:encoded>
	</item>
	<item>
		<title>Par : Laurent</title>
		<link>http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/comment-page-1/#comment-1088</link>
		<dc:creator>Laurent</dc:creator>
		<pubDate>Wed, 03 Feb 2010 04:29:29 +0000</pubDate>
		<guid isPermaLink="false">http://pixel-shaker.fr/fr/?p=836#comment-1088</guid>
		<description>&lt;p&gt;Je n&#039;ai pas trouvé d&#039;autres solutions. Finalement, je m&#039;en remets à l&#039;échange d&#039;images par lecture/écriture : les problèmes de synchronisation et de gestion d&#039;erreurs entre les deux machines sont gérés par jpype, et les performances sont correctes, sauf pour l&#039;écriture par imagej qui semble prendre environ 0.5 sec sur un pc avec peu de ram (1 Go) alors que ce chiffre tombe à 0.05 sur un autre pc avec 2 Go de ram, ou lors du premier chargement de la machine java. C&#039;est un comportement étrange qui semble lié à la mise en cache de la machine.
Merci pour tout.
Laurent&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Je n'ai pas trouvé d'autres solutions. Finalement, je m'en remets à l'échange d'images par lecture/écriture : les problèmes de synchronisation et de gestion d'erreurs entre les deux machines sont gérés par jpype, et les performances sont correctes, sauf pour l'écriture par imagej qui semble prendre environ 0.5 sec sur un pc avec peu de ram (1 Go) alors que ce chiffre tombe à 0.05 sur un autre pc avec 2 Go de ram, ou lors du premier chargement de la machine java. C'est un comportement étrange qui semble lié à la mise en cache de la machine.
Merci pour tout.
Laurent</p>]]></content:encoded>
	</item>
	<item>
		<title>Par : Laurent</title>
		<link>http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/comment-page-1/#comment-1055</link>
		<dc:creator>Laurent</dc:creator>
		<pubDate>Thu, 21 Jan 2010 15:18:58 +0000</pubDate>
		<guid isPermaLink="false">http://pixel-shaker.fr/fr/?p=836#comment-1055</guid>
		<description>&lt;p&gt;Hum, exact. Bien vu pour le coup du 2D python vers 1D java. J&#039;étais passé à côté. Grand merci.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hum, exact. Bien vu pour le coup du 2D python vers 1D java. J'étais passé à côté. Grand merci.</p>]]></content:encoded>
	</item>
	<item>
		<title>Par : fmn</title>
		<link>http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/comment-page-1/#comment-1054</link>
		<dc:creator>fmn</dc:creator>
		<pubDate>Thu, 21 Jan 2010 13:55:50 +0000</pubDate>
		<guid isPermaLink="false">http://pixel-shaker.fr/fr/?p=836#comment-1054</guid>
		<description>&lt;p&gt;Il semble que la conversion dans les deux cas ne porte pas sur le même nombre d&#039;éléments :
&lt;pre&gt;
im = np.zeros((1024,1024), dtype = np.uint8)
len(JArray(JByte, 1)(im)
&lt;/pre&gt;
renvoit la valeur 1024. Mais le tableau renvoyé ne contient que des uint8. Comme en Java, un tableau 2D est un tableau de tableau, seuls les premiers éléments soient retenus. Par contre:
&lt;pre&gt;
im = np.zeros((1024,1024), dtype = np.uint8)
len(JArray(JByte, 1)(im.flatten())
&lt;/pre&gt;
donne la bonne valeur 1048576, mais pour une durée ~0.67s.&lt;/p&gt;

&lt;p&gt;Sinon mes essais actuels pour affecter le tableau ainsi créer à un ByteProcessor echouent également. Je continue...&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Il semble que la conversion dans les deux cas ne porte pas sur le même nombre d'éléments :
<pre>
im = np.zeros((1024,1024), dtype = np.uint8)
len(JArray(JByte, 1)(im)
</pre>
renvoit la valeur 1024. Mais le tableau renvoyé ne contient que des uint8. Comme en Java, un tableau 2D est un tableau de tableau, seuls les premiers éléments soient retenus. Par contre:
<pre>
im = np.zeros((1024,1024), dtype = np.uint8)
len(JArray(JByte, 1)(im.flatten())
</pre>
donne la bonne valeur 1048576, mais pour une durée ~0.67s.</p>

<p>Sinon mes essais actuels pour affecter le tableau ainsi créer à un ByteProcessor echouent également. Je continue...</p>]]></content:encoded>
	</item>
	<item>
		<title>Par : Laurent</title>
		<link>http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/comment-page-1/#comment-1052</link>
		<dc:creator>Laurent</dc:creator>
		<pubDate>Thu, 21 Jan 2010 12:57:34 +0000</pubDate>
		<guid isPermaLink="false">http://pixel-shaker.fr/fr/?p=836#comment-1052</guid>
		<description>&lt;p&gt;J&#039;ai fait un nouveau test, en utilisant les wrappers de jpype. Et je me suis aperçu de la chose suivante :
(image est de type numpy.array de 2 dimensions, 1024*1024, dtype=uint8)&lt;/p&gt;

&lt;p&gt;JArray(JInt,2)(image) : 4 sec. Permet de transférer vers un objet ByteProcessor de imagej avec la méthode setIntArray de ImageProcessor&lt;/p&gt;

&lt;p&gt;JArray(JInt,1)(image) : 0.003 sec !!! Mais je n&#039;ai pas trouvé de possibilité, dans l&#039;api imagej, de transférer vers un objet ImageProcessor.&lt;/p&gt;

&lt;p&gt;JArray(JByte,1)(image) : 0.0012 sec. Je pensais pouvoir transférer les données vers un objet ByteProcessor grâce à la méthode setPixels. Mais jpype me retourne une erreur d&#039;exception alors que le code de cette méthode devrait marcher (pour ce que je connais de java).&lt;/p&gt;

&lt;p&gt;Conclusion : je ne sais pas ce qui entraine ce facteur 1000 entre les deux types de conversion (1D ou 2D). Le code python ou le code java ? En outre, je ne trouve pas de point d&#039;entrer dans le code imagej pour convertir JArray(JByte,1) vers ByteProcessor. C&#039;est vraiment frustrant, car là je sens que j&#039;approche d&#039;une solution. Une solution serait de créer un plugin imagej permettant ce transfert. Mais là je touche à mes limites : je ne suis pas codeur java.&lt;/p&gt;

&lt;p&gt;Je vous tiens au courant si je progresse.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>J'ai fait un nouveau test, en utilisant les wrappers de jpype. Et je me suis aperçu de la chose suivante :
(image est de type numpy.array de 2 dimensions, 1024*1024, dtype=uint8)</p>

<p>JArray(JInt,2)(image) : 4 sec. Permet de transférer vers un objet ByteProcessor de imagej avec la méthode setIntArray de ImageProcessor</p>

<p>JArray(JInt,1)(image) : 0.003 sec !!! Mais je n'ai pas trouvé de possibilité, dans l'api imagej, de transférer vers un objet ImageProcessor.</p>

<p>JArray(JByte,1)(image) : 0.0012 sec. Je pensais pouvoir transférer les données vers un objet ByteProcessor grâce à la méthode setPixels. Mais jpype me retourne une erreur d'exception alors que le code de cette méthode devrait marcher (pour ce que je connais de java).</p>

<p>Conclusion : je ne sais pas ce qui entraine ce facteur 1000 entre les deux types de conversion (1D ou 2D). Le code python ou le code java ? En outre, je ne trouve pas de point d'entrer dans le code imagej pour convertir JArray(JByte,1) vers ByteProcessor. C'est vraiment frustrant, car là je sens que j'approche d'une solution. Une solution serait de créer un plugin imagej permettant ce transfert. Mais là je touche à mes limites : je ne suis pas codeur java.</p>

<p>Je vous tiens au courant si je progresse.</p>]]></content:encoded>
	</item>
	<item>
		<title>Par : fmn</title>
		<link>http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/comment-page-1/#comment-1051</link>
		<dc:creator>fmn</dc:creator>
		<pubDate>Thu, 21 Jan 2010 10:57:04 +0000</pubDate>
		<guid isPermaLink="false">http://pixel-shaker.fr/fr/?p=836#comment-1051</guid>
		<description>&lt;p&gt;Il semble que jni permette d&#039;obtenir depuis C un pointeur sur un tableau (voir &lt;a href=&quot;http://java.sun.com/docs/books/jni/html/objtypes.html#27346&quot; rel=&quot;nofollow&quot;&gt;http://java.sun.com/docs/books/jni/html/objtypes.html#27346&lt;/a&gt;).  Mais je n&#039;ai jamais testé cela.
En fait pour moi l&#039;intérêt de JPype est d&#039;accéder à java, sans mettre les mains dans JNI. Mais il semble qu&#039;il y ait un certain prix à ce confort.&lt;/p&gt;

&lt;p&gt;Peut-être que les autres méthodes que je mentionne en début de billet (JCC et JavaClass) sont plus performantes? En tout cas, merci d&#039;avoir sur ce problème et je suis preneur d&#039;infos sur ce point.&lt;/p&gt;

&lt;p&gt;FMN.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Il semble que jni permette d'obtenir depuis C un pointeur sur un tableau (voir <a href="http://java.sun.com/docs/books/jni/html/objtypes.html#27346" rel="nofollow">http://java.sun.com/docs/books/jni/html/objtypes.html#27346</a>).  Mais je n'ai jamais testé cela.
En fait pour moi l'intérêt de JPype est d'accéder à java, sans mettre les mains dans JNI. Mais il semble qu'il y ait un certain prix à ce confort.</p>

<p>Peut-être que les autres méthodes que je mentionne en début de billet (JCC et JavaClass) sont plus performantes? En tout cas, merci d'avoir sur ce problème et je suis preneur d'infos sur ce point.</p>

<p>FMN.</p>]]></content:encoded>
	</item>
	<item>
		<title>Par : Laurent</title>
		<link>http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/comment-page-1/#comment-1050</link>
		<dc:creator>Laurent</dc:creator>
		<pubDate>Thu, 21 Jan 2010 10:32:50 +0000</pubDate>
		<guid isPermaLink="false">http://pixel-shaker.fr/fr/?p=836#comment-1050</guid>
		<description>&lt;p&gt;J&#039;ai aussi fait un test sur une machine plus musclée d&#039;un collègue. Le temps passe de 5 à 3 secondes. Donc pas de miracle.
Je voulais éviter le mécanisme d&#039;échanges de données sur disque, car, pour assurer une fiabilité correcte, il faut prévoir et coder un &quot;vrai&quot; protocole d&#039;échange (synchronisation des deux logiciels, gestion de message d&#039;erreur, adaptation des chemins si distribution du logiciel, &quot;handshake&quot; etc...) entre les deux programmes. Et ce, des deux côtés ce qui implique de coder un plugins imagej dédié.
Effectivement, l&#039;auteur indique bien des problèmes de performance mais je n&#039;aurais jamais imaginé que cela pouvait tomber si bas (1024x1024 octects ce n&#039;est jamais qu&#039;un objet &quot;petit&quot; objet de 1 Mo). 
J&#039;ai regardé s&#039;il y avait moyen de partager entre imagej et python l&#039;espace mémoire directement sans copie préalable (transmission simple de pointeurs). Mais, de ce point de vue, java et l&#039;api imagej ne semblent pas offrir cette possibilité. 
Enfin, il y a encore une possibilité : je regarde s&#039;il est possible de transférer non pas l&#039;image brute mais déjà compressée en mémoire. Mais cela semble aussi complexe.&lt;/p&gt;

&lt;p&gt;Je suis donc sur le point de renoncer et de m&#039;en remettre à la conversion de plugins java en C au sein d&#039;une dll.&lt;/p&gt;

&lt;p&gt;En tout cas merci d&#039;avoir pris le temps de jeter un oeil à ces problèmes. Si jamais je trouve une astuce, je ne manquerai pas de la partager sur votre blog.&lt;/p&gt;

&lt;p&gt;Laurent&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>J'ai aussi fait un test sur une machine plus musclée d'un collègue. Le temps passe de 5 à 3 secondes. Donc pas de miracle.
Je voulais éviter le mécanisme d'échanges de données sur disque, car, pour assurer une fiabilité correcte, il faut prévoir et coder un "vrai" protocole d'échange (synchronisation des deux logiciels, gestion de message d'erreur, adaptation des chemins si distribution du logiciel, "handshake" etc...) entre les deux programmes. Et ce, des deux côtés ce qui implique de coder un plugins imagej dédié.
Effectivement, l'auteur indique bien des problèmes de performance mais je n'aurais jamais imaginé que cela pouvait tomber si bas (1024x1024 octects ce n'est jamais qu'un objet "petit" objet de 1 Mo). 
J'ai regardé s'il y avait moyen de partager entre imagej et python l'espace mémoire directement sans copie préalable (transmission simple de pointeurs). Mais, de ce point de vue, java et l'api imagej ne semblent pas offrir cette possibilité. 
Enfin, il y a encore une possibilité : je regarde s'il est possible de transférer non pas l'image brute mais déjà compressée en mémoire. Mais cela semble aussi complexe.</p>

<p>Je suis donc sur le point de renoncer et de m'en remettre à la conversion de plugins java en C au sein d'une dll.</p>

<p>En tout cas merci d'avoir pris le temps de jeter un oeil à ces problèmes. Si jamais je trouve une astuce, je ne manquerai pas de la partager sur votre blog.</p>

<p>Laurent</p>]]></content:encoded>
	</item>
	<item>
		<title>Par : fmn</title>
		<link>http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/comment-page-1/#comment-1049</link>
		<dc:creator>fmn</dc:creator>
		<pubDate>Thu, 21 Jan 2010 09:52:43 +0000</pubDate>
		<guid isPermaLink="false">http://pixel-shaker.fr/fr/?p=836#comment-1049</guid>
		<description>&lt;p&gt;Laurent,&lt;/p&gt;

&lt;p&gt;effectivement avec java il faut inclure dans le classpath, le chemin de toutes les librairies.&lt;/p&gt;

&lt;p&gt;Sinon pour le problème de transfert. Mes temps de conversions sont du même ordre. Par exemple
&lt;pre&gt;
ar = im.getProcessor().getIntArray()
ar_python = np.array(ar)
&lt;/pre&gt;
donne un temps d&#039;env. 5s (pour une image 1024 par 1024). Par contre en ajoutant une indication du type du tableau crée:
&lt;pre&gt;
ar = im.getProcessor().getIntArray()
ar_python = np.array(ar, dtype=np.uint8)
&lt;/pre&gt;
le temps de conversion &quot;tombe&quot; à ~2s. Ce qui reste assez inexploitable si des transferts fréquents sont nécessaire. L&#039;auteur de JPype (voir Performances dans la doc) est conscient de cette inéfficacité, due à jni semble-t-il. La comparaison avec le transfert en utilisant ctypes est forcément en faveur de ctypes, puisque l&#039;on reste dans le même &quot;monde&quot;. Ici il y a un transfert forcé de/vers la jvm.&lt;/p&gt;

&lt;p&gt;Dans ton cas, je procéderai autrement. Des tests rapides montrent qu&#039;en passant par une écriture/lecture disque, on peut transférer une image beaucoup plus rapidement. Par exemple, avec:
&lt;pre&gt;
ij.IJ.save(im, &#039;tmp.gif&#039;)
ar_python = pylab.imread(&#039;tmp.gif&#039;)
&lt;/pre&gt;
le temps de transfert est de 0,08s.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Laurent,</p>

<p>effectivement avec java il faut inclure dans le classpath, le chemin de toutes les librairies.</p>

<p>Sinon pour le problème de transfert. Mes temps de conversions sont du même ordre. Par exemple
<pre>
ar = im.getProcessor().getIntArray()
ar_python = np.array(ar)
</pre>
donne un temps d'env. 5s (pour une image 1024 par 1024). Par contre en ajoutant une indication du type du tableau crée:
<pre>
ar = im.getProcessor().getIntArray()
ar_python = np.array(ar, dtype=np.uint8)
</pre>
le temps de conversion "tombe" à ~2s. Ce qui reste assez inexploitable si des transferts fréquents sont nécessaire. L'auteur de JPype (voir Performances dans la doc) est conscient de cette inéfficacité, due à jni semble-t-il. La comparaison avec le transfert en utilisant ctypes est forcément en faveur de ctypes, puisque l'on reste dans le même "monde". Ici il y a un transfert forcé de/vers la jvm.</p>

<p>Dans ton cas, je procéderai autrement. Des tests rapides montrent qu'en passant par une écriture/lecture disque, on peut transférer une image beaucoup plus rapidement. Par exemple, avec:
<pre>
ij.IJ.save(im, 'tmp.gif')
ar_python = pylab.imread('tmp.gif')
</pre>
le temps de transfert est de 0,08s.</p>]]></content:encoded>
	</item>
	<item>
		<title>Par : Laurent</title>
		<link>http://pixel-shaker.fr/fr/2009/11/utiliser-imagej-dans-un-notebook-sage-un-exemple-dappel-de-java-depuis-python/comment-page-1/#comment-1046</link>
		<dc:creator>Laurent</dc:creator>
		<pubDate>Wed, 20 Jan 2010 16:39:50 +0000</pubDate>
		<guid isPermaLink="false">http://pixel-shaker.fr/fr/?p=836#comment-1046</guid>
		<description>&lt;p&gt;Bonjour et merci de la réponse.
La difficulté était d&#039;appeler des plugins ImageJ depuis Python. Pour une raison simple (voir après) mais mal indiquée par le module, je n&#039;arrivais pas à accéder aux classes de ces plugins. En fait, pour un plugin imagej donné, il faut fournir non seulement le chemin de son .jar mais aussi ceux de toutes les classes dont il dépend dans le path java. Le message d&#039;erreur de jpype ne m&#039;a pas beaucoup aidé, puisqu&#039;il indiquait toujours qu&#039;il ne trouvait pas la classe principale que je tentais de lier, alors qu&#039;en fait c&#039;était les dépendances qui n&#039;étaient pas trouver. Ce problème est donc résolu.&lt;/p&gt;

&lt;p&gt;Par contre, au final, je suis très déçu : les échanges de donnés entre python et imagej sont très très lents. Sur mon pc, une image de 1024x1024 octets met un temps &gt; 5 sec pour transiter d&#039;un objet numpy.array vers un objet ByteProcessor, et vice versa (voir votre exemple avec une image 1024x1024). 
Je pensais accéder à toute la puissance des traitements disponibles sur imagej depuis le projet que je développe en Python. C&#039;est le cas, mais cette lenteur est, pour mon projet, inacceptable : je vise un temps de traitement global inférieur à la seconde (ce qui est déjà énorme sur les ordinateurs d&#039;aujourd&#039;hui). Et je voulais éviter de devoir coder les plugins imagej qui m&#039;intéressaient de java vers C et créer une dll appelable depuis Python.
Savez-vous si cette lenteur de transfert est normal et s&#039;il n&#039;y a pas moyen d&#039;accélérer les choses ? Pouvez-vous faire l&#039;essai avec votre exemple et une image de 1024x1024 pixels d&#039;un octet ?
A titre de comparaison, le transfert en python et une dll à l&#039;aide de ctypes est quasi-instantané.&lt;/p&gt;

&lt;p&gt;Merci encore une fois de partager votre expérience.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Bonjour et merci de la réponse.
La difficulté était d'appeler des plugins ImageJ depuis Python. Pour une raison simple (voir après) mais mal indiquée par le module, je n'arrivais pas à accéder aux classes de ces plugins. En fait, pour un plugin imagej donné, il faut fournir non seulement le chemin de son .jar mais aussi ceux de toutes les classes dont il dépend dans le path java. Le message d'erreur de jpype ne m'a pas beaucoup aidé, puisqu'il indiquait toujours qu'il ne trouvait pas la classe principale que je tentais de lier, alors qu'en fait c'était les dépendances qui n'étaient pas trouver. Ce problème est donc résolu.</p>

<p>Par contre, au final, je suis très déçu : les échanges de donnés entre python et imagej sont très très lents. Sur mon pc, une image de 1024x1024 octets met un temps &gt; 5 sec pour transiter d'un objet numpy.array vers un objet ByteProcessor, et vice versa (voir votre exemple avec une image 1024x1024). 
Je pensais accéder à toute la puissance des traitements disponibles sur imagej depuis le projet que je développe en Python. C'est le cas, mais cette lenteur est, pour mon projet, inacceptable : je vise un temps de traitement global inférieur à la seconde (ce qui est déjà énorme sur les ordinateurs d'aujourd'hui). Et je voulais éviter de devoir coder les plugins imagej qui m'intéressaient de java vers C et créer une dll appelable depuis Python.
Savez-vous si cette lenteur de transfert est normal et s'il n'y a pas moyen d'accélérer les choses ? Pouvez-vous faire l'essai avec votre exemple et une image de 1024x1024 pixels d'un octet ?
A titre de comparaison, le transfert en python et une dll à l'aide de ctypes est quasi-instantané.</p>

<p>Merci encore une fois de partager votre expérience.</p>]]></content:encoded>
	</item>
</channel>
</rss>

