Another great feature of Jython is the possibility to use functions from Java jar package that resides in the jar folder of imageJ.
==== ImageJ and Fiji API ====
The following API documentation lists all available module and functions :
</source>
==== Using openCV in Jython ====
It is even possible to use most of opencv functionalities within Jython/Fiji. There are several options (see the [https://imagej.net/OpenCV wiki page about opencv]), yet the most straight forward is probably IJ-OpenCV which is available via the update sites. It will automatically download the necessary packages and dependencies in your Fiji installation.
A manual installation is also possible by putting the jar packages in the jar folder of imageJ. They are avalaible on the [https://github.com/joheras/IJ-OpenCV IJopenCV github], which even provides a maven option.
==== Matrices ====
The first thing to know about OpenCV is that most functions work with an OpenCV matrix object. Fortunately, the IJ-OpenCV project provides some converters :
Now to use opencv function, we use the [http://bytedeco.org/javacpp-presets/opencv/apidocs/ JavaCPP API] that contains almost all functions of opencv.
An simple example : creating an identity matrix of size 3x3
<source lang="python">
from org.bytedeco.javacpp.opencv_core import Mat,CvMat, vconcat
## Typical matrices ##
# Identity Matrix of size (3x3) and type 8-bit
Id = Mat().eye(3,3,0).asMat()
print Id
print CvMat(Id) # handy to visualise the matrix
# Matrix of ones (3x3)
One = Mat().ones(3,3,0).asMat()
# Matrix of zeros (3x3)
Zero = Mat().zeros(3,3,0).asMat()
# Custom Matrices
# 1D-Matrix can be initialize from a list
# For 2D (or more) we have to concatenate 1D-Matrices
Row1 = Mat([1,2,3,4,5]) # 1D matrix
Row2 = Mat([6,7,8,9,10])
print IdTwoColumn = Mat() # initialise outputvconcat(Col1, Col2, TwoColumn) # output stored in TwoColumnprint CvMat(IdTwoColumn) # nice to visualise the matrix