This notebook is part of the PyImageJ Tutorial Series, and assumes familiarity with the ImageJ API. Dedicated tutorials for ImageJ can be found here.
8 Discover ImageJ commands with the Recorder
The original ImageJ contains many useful commands that can be hard to use in PyImageJ without some prior knowledge on the their parameters. This notebook demonstrates how to use ImageJ’s Recorder
feature to record ImageJ commands in a supported language (IJ Macro
, BeanScript
, Java
and JavaScript
).
8.1 Example 1: Apply “Find Maxima…” command to an image
In this example we will use “Find Maxima” on a test image. Once the image is loaded, open the Recorder
(see image below) and begin running commands to capture the code lines.
Now that the Recorder
window is open and listening for commands, set the recorder language to either Java
or JavaScript
before running the “Find Maxima…” command. Next run the “Find Maxima…” command (Process > Find Maxima…) to capture the code lines.
Running “Find Maxima…” (set to prominence=1000
and Point Selection
) on test_still.tif
results in 21 detections which are then overlayed over the input image.:
Now that we have the Java
code for the “Find Maxima…” command we can replicate this workflow in PyImageJ. The “Find Maxima…” command will overlay detections ontop of a displayed input image, therefore we will need to initialize ImageJ in interactive
mode. Please note that MacOS users will have to change the mode to gui
due to architecture limitations. For more information please visit the initialization documentation.
import imagej
# initialize ImageJ2
ij = imagej.init(mode='headless')
print(f"ImageJ2 version: {ij.getVersion()}")
ImageJ2 version: 2.9.0/1.53t
Because the “Find Maxima…” and other original ImageJ commands work with the ImagePlus
object type (instead of the newer ImageJ2/ImgLib2 Dataset
and ImgPlus
object types) we need to first convert the Dataset
returned from ij.io().open()
to an ImagePlus
.
Note: There is a currently a bug
# HACK: # HACK: Work around ImagePlus#show() failure if no ImagePlus objects are already registered.
if ij.WindowManager.getIDList() is None:
ij.py.run_macro('newImage("dummy", "8-bit", 1, 1, 1);')
Operating in headless mode - the original ImageJ will have limited functionality.
Operating in headless mode - the WindowManager class will not be fully functional.
# open test image and convert from Dataset to ImagePlus
dataset = ij.io().open('sample-data/test_still.tif')
imp = ij.py.to_imageplus(dataset)
# show the image
ij.py.show(imp)

Next, show the image with ImageJ and run Find Maxima...
using the same Java
syntax generated from the recorder.
# show image and then find maxima
imp.getProcessor().resetMinAndMax()
ij.ui().show(imp)
ij.IJ.run(imp, "Find Maxima...", "prominence=1000 output=[Point Selection]")
[java.lang.Enum.toString] [INFO] null = img["test_still.tif" (-3), 16-bit, 300x300x1x1x1]
Operating in headless mode - the IJ class will not be fully functional.
[INFO] null = img["test_still.tif" (-3), 16-bit, 300x300x1x1x1]
8.2 Example 2: Extract a slice and run “Analyze Particles…”
Let’s try a more complicated example next. This Java code was generated with the ImageJ Recorder while analyzing some data.
imp = IJ.openImage("sample-data/test_timeseries.tif");
imp2 = new Duplicator().run(imp, 3, 3, 1, 1, 14, 14);
IJ.run(imp, "Enhance Contrast", "saturated=0.35");
IJ.setAutoThreshold(imp, "Moments dark");
IJ.run(imp, "Analyze Particles...", " show=Overlay display clear");
The Java code takes the test_timeseries.tif
sample data (4D: [X, Y, Channel, Time]) and performs the following operations:
Open the test data.
Duplicate channel 3, frame 14 (extracts a single still from the timeseries).
Enhance the contrast of the image.
Threshold with “Moments dark”.
Analyze particles and display results via overlay.
Results:
Note that in this example we will use the orginal ImageJ’s image opener (IJ.openImage()
) instead of ImageJ2’s (ij.io().open()
). The original ImageJ’s opener is more limited than ImageJ2’s however it will return an ImagePlus
image object instead of a Dataset
, thus no conversion step is needed like in the previous example.
Just like in the Example 1 the Java
code generated from the Recorder can be typically used with little to no modification for language syntax (take note of the different syntax needed to use the Duplicator
):
from scyjava import jimport
# get ImageJ's duplicator
Duplicator = jimport('ij.plugin.Duplicator')
# run ImageJ commands
imp_timeseries = ij.IJ.openImage("sample-data/test_timeseries.tif")
imp_extract = Duplicator().run(imp_timeseries, 3, 3, 1, 1, 14, 14) # visit the Javadoc for more info https://imagej.nih.gov/ij/developer/api/ij/ij/plugin/Duplicator.html
ij.IJ.run(imp_extract, "Enhance Contrast", "saturated=0.35")
ij.ui().show(imp_extract)
ij.IJ.setAutoThreshold(imp_extract, "Moments dark")
ij.IJ.run(imp_extract, "Analyze Particles...", " show=Overlay display clear")
[INFO] null = img["DUP_test_timeseries.tif" (-6), 16-bit, 250x250x1x1x1]
[java.lang.Enum.toString] [INFO] null = img["DUP_test_timeseries.tif" (-6), 16-bit, 250x250x1x1x1]
Area Mean Min Max
1 0.211 1293 1141 1445
2 0.739 1216.143 1085 1473
3 0.106 1333.000 1333 1333
4 0.528 1193.400 1099 1295
5 0.317 1241.667 1087 1384
6 180.091 1513.540 1083 4462
7 0.106 1104.000 1104 1104
8 3.803 1478.194 1085 2510
9 0.211 1268.000 1161 1375
10 0.211 1171.000 1108 1234
11 0.106 1257.000 1257 1257
12 0.423 1371.250 1186 1686
13 0.317 1140.667 1109 1157
14 0.423 1187.500 1097 1241
15 0.528 1182.800 1132 1312
16 0.423 1302.500 1117 1634
17 0.739 1215.286 1102 1352
18 0.423 1234.500 1192 1276
19 1.479 1192.214 1086 1398
20 0.845 1422.125 1150 1897
21 0.211 1116.500 1113 1120
22 0.211 1141.500 1128 1155
23 0.106 1168.000 1168 1168
24 0.106 1163.000 1163 1163
25 0.211 1126.000 1102 1150
26 0.423 1222.750 1086 1383
27 22.498 1762.784 1084 5446
28 1.162 1330.364 1092 1829
29 0.634 1167.667 1110 1227
30 0.739 1328.571 1137 1482
31 1.162 1216.818 1089 1455
32 0.106 1124.000 1124 1124
33 0.317 1166.333 1101 1208
34 0.106 1092.000 1092 1092
35 0.106 1136.000 1136 1136
36 0.211 1106.000 1092 1120
37 3.063 1362.310 1083 2069
38 0.106 1088.000 1088 1088
39 0.211 1150.500 1104 1197
40 0.211 1123.500 1110 1137
41 1.901 1434.944 1103 2129
42 0.211 1128.500 1100 1157
43 8.344 1414.139 1091 2321
44 0.951 1351.111 1134 1652
45 0.951 1435.444 1088 1798
46 0.528 1161.400 1106 1248
47 0.528 1120.200 1102 1144
48 0.528 1277.400 1110 1547
49 0.951 1182.667 1088 1279
50 0.211 1184.000 1110 1258
51 3.274 1360.774 1098 1866
52 0.423 1267.250 1116 1458
53 3.908 1232.703 1083 1597
54 11.302 1550.327 1096 2918
55 0.211 1088.500 1087 1090
56 0.106 1138.000 1138 1138
57 1.901 1470.667 1102 2386
58 0.106 1084.000 1084 1084
59 1.373 1266.846 1145 1573
60 2.113 1330.600 1131 1581
61 2.958 1209.321 1083 1670
62 1.056 1364.300 1106 1748
63 0.423 1334.500 1289 1374
64 0.106 1141.000 1141 1141
65 1.162 1330.818 1083 1694
66 0.423 1250.500 1131 1375
67 0.423 1182.250 1102 1337
68 0.211 1120.500 1120 1121
69 0.106 1097.000 1097 1097
70 25.561 1346.455 1084 2808
71 1.162 1133.455 1084 1221
72 6.338 1389.550 1113 2426
73 0.634 1148.333 1089 1231
74 1.796 1360.118 1084 1974
75 0.951 1351.000 1095 1746
76 0.106 1113.000 1113 1113
77 0.634 1129.167 1089 1212
78 0.106 1108.000 1108 1108
79 0.106 1090.000 1090 1090
80 0.106 1105.000 1105 1105
81 0.106 1138.000 1138 1138
82 1.584 1573.533 1103 2296
83 0.106 1108.000 1108 1108
84 0.211 1103.500 1085 1122
85 0.106 1092.000 1092 1092
86 0.211 1103.000 1084 1122
87 2.852 1268.963 1091 1598
88 0.423 1100.750 1083 1122
89 0.106 1110.000 1110 1110
90 0.317 1136.333 1102 1188
91 0.106 1126.000 1126 1126
92 0.106 1116.000 1116 1116
93 0.317 1141.667 1084 1233
94 0.106 1083.000 1083 1083
95 1.479 1183.571 1085 1314
96 0.211 1138.000 1135 1141
97 2.429 1494.130 1084 2113
98 0.211 1125.000 1102 1148
99 0.211 1098.500 1085 1112
100 0.423 1157.250 1100 1208
101 0.739 1273.714 1125 1414
102 0.634 1142.833 1096 1169
103 0.211 1127.500 1099 1156
104 0.739 1239.714 1095 1509
105 0.106 1091.000 1091 1091
106 0.845 1167.000 1084 1255
107 0.211 1085.000 1085 1085
108 1.479 1309.357 1097 1704
109 0.528 1316.600 1211 1587
110 0.951 1314.778 1133 1693
111 0.423 1148.250 1097 1244
112 0.423 1146.500 1103 1165
113 1.373 1357.538 1092 1626
114 0.106 1156.000 1156 1156
115 10.563 1473.170 1084 2716
116 0.211 1161.000 1156 1166
117 0.106 1095.000 1095 1095
118 0.106 1101.000 1101 1101
119 5.176 1373.796 1089 2209
120 0.317 1266.333 1203 1303
121 0.528 1288.200 1110 1490
122 2.113 1429.950 1098 2307
123 1.584 1249.067 1090 1491
124 2.007 1558.421 1099 2453
125 0.106 1112.000 1112 1112
126 1.056 1243.600 1085 1465
127 2.218 1518.762 1094 2666
128 0.211 1172.000 1159 1185
129 0.634 1275.167 1099 1602
130 0.106 1131.000 1131 1131
131 0.106 1277.000 1277 1277
132 0.106 1119.000 1119 1119
133 0.317 1191.000 1130 1236
134 0.106 1163.000 1163 1163
135 0.211 1141.500 1113 1170
136 0.106 1119.000 1119 1119
[java.lang.Enum.toString] Area Mean Min Max[java.lang.Enum.toString]
[java.lang.Enum.toString] 1 0.211 1293 1141 1445[java.lang.Enum.toString]
[java.lang.Enum.toString] 2 0.739 1216.143 1085 1473[java.lang.Enum.toString]
[java.lang.Enum.toString] 3 0.106 1333.000 1333 1333[java.lang.Enum.toString]
[java.lang.Enum.toString] 4 0.528 1193.400 1099 1295[java.lang.Enum.toString]
[java.lang.Enum.toString] 5 0.317 1241.667 1087 1384[java.lang.Enum.toString]
[java.lang.Enum.toString] 6 180.091 1513.540 1083 4462[java.lang.Enum.toString]
[java.lang.Enum.toString] 7 0.106 1104.000 1104 1104[java.lang.Enum.toString]
[java.lang.Enum.toString] 8 3.803 1478.194 1085 2510[java.lang.Enum.toString]
[java.lang.Enum.toString] 9 0.211 1268.000 1161 1375[java.lang.Enum.toString]
[java.lang.Enum.toString] 10 0.211 1171.000 1108 1234[java.lang.Enum.toString]
[java.lang.Enum.toString] 11 0.106 1257.000 1257 1257[java.lang.Enum.toString]
[java.lang.Enum.toString] 12 0.423 1371.250 1186 1686[java.lang.Enum.toString]
[java.lang.Enum.toString] 13 0.317 1140.667 1109 1157[java.lang.Enum.toString]
[java.lang.Enum.toString] 14 0.423 1187.500 1097 1241[java.lang.Enum.toString]
[java.lang.Enum.toString] 15 0.528 1182.800 1132 1312[java.lang.Enum.toString]
[java.lang.Enum.toString] 16 0.423 1302.500 1117 1634[java.lang.Enum.toString]
[java.lang.Enum.toString] 17 0.739 1215.286 1102 1352[java.lang.Enum.toString]
[java.lang.Enum.toString] 18 0.423 1234.500 1192 1276[java.lang.Enum.toString]
[java.lang.Enum.toString] 19 1.479 1192.214 1086 1398[java.lang.Enum.toString]
[java.lang.Enum.toString] 20 0.845 1422.125 1150 1897[java.lang.Enum.toString]
[java.lang.Enum.toString] 21 0.211 1116.500 1113 1120[java.lang.Enum.toString]
[java.lang.Enum.toString] 22 0.211 1141.500 1128 1155[java.lang.Enum.toString]
[java.lang.Enum.toString] 23 0.106 1168.000 1168 1168[java.lang.Enum.toString]
[java.lang.Enum.toString] 24 0.106 1163.000 1163 1163[java.lang.Enum.toString]
[java.lang.Enum.toString] 25 0.211 1126.000 1102 1150[java.lang.Enum.toString]
[java.lang.Enum.toString] 26 0.423 1222.750 1086 1383[java.lang.Enum.toString]
[java.lang.Enum.toString] 27 22.498 1762.784 1084 5446[java.lang.Enum.toString]
[java.lang.Enum.toString] 28 1.162 1330.364 1092 1829[java.lang.Enum.toString]
[java.lang.Enum.toString] 29 0.634 1167.667 1110 1227[java.lang.Enum.toString]
[java.lang.Enum.toString] 30 0.739 1328.571 1137 1482[java.lang.Enum.toString]
[java.lang.Enum.toString] 31 1.162 1216.818 1089 1455[java.lang.Enum.toString]
[java.lang.Enum.toString] 32 0.106 1124.000 1124 1124[java.lang.Enum.toString]
[java.lang.Enum.toString] 33 0.317 1166.333 1101 1208[java.lang.Enum.toString]
[java.lang.Enum.toString] 34 0.106 1092.000 1092 1092[java.lang.Enum.toString]
[java.lang.Enum.toString] 35 0.106 1136.000 1136 1136[java.lang.Enum.toString]
[java.lang.Enum.toString] 36 0.211 1106.000 1092 1120[java.lang.Enum.toString]
[java.lang.Enum.toString] 37 3.063 1362.310 1083 2069[java.lang.Enum.toString]
[java.lang.Enum.toString] 38 0.106 1088.000 1088 1088[java.lang.Enum.toString]
[java.lang.Enum.toString] 39 0.211 1150.500 1104 1197[java.lang.Enum.toString]
[java.lang.Enum.toString] 40 0.211 1123.500 1110 1137[java.lang.Enum.toString]
[java.lang.Enum.toString] 41 1.901 1434.944 1103 2129[java.lang.Enum.toString]
[java.lang.Enum.toString] 42 0.211 1128.500 1100 1157[java.lang.Enum.toString]
[java.lang.Enum.toString] 43 8.344 1414.139 1091 2321[java.lang.Enum.toString]
[java.lang.Enum.toString] 44 0.951 1351.111 1134 1652[java.lang.Enum.toString]
[java.lang.Enum.toString] 45 0.951 1435.444 1088 1798[java.lang.Enum.toString]
[java.lang.Enum.toString] 46 0.528 1161.400 1106 1248[java.lang.Enum.toString]
[java.lang.Enum.toString] 47 0.528 1120.200 1102 1144[java.lang.Enum.toString]
[java.lang.Enum.toString] 48 0.528 1277.400 1110 1547[java.lang.Enum.toString]
[java.lang.Enum.toString] 49 0.951 1182.667 1088 1279[java.lang.Enum.toString]
[java.lang.Enum.toString] 50 0.211 1184.000 1110 1258[java.lang.Enum.toString]
[java.lang.Enum.toString] 51 3.274 1360.774 1098 1866[java.lang.Enum.toString]
[java.lang.Enum.toString] 52 0.423 1267.250 1116 1458[java.lang.Enum.toString]
[java.lang.Enum.toString] 53 3.908 1232.703 1083 1597[java.lang.Enum.toString]
[java.lang.Enum.toString] 54 11.302 1550.327 1096 2918[java.lang.Enum.toString]
[java.lang.Enum.toString] 55 0.211 1088.500 1087 1090[java.lang.Enum.toString]
[java.lang.Enum.toString] 56 0.106 1138.000 1138 1138[java.lang.Enum.toString]
[java.lang.Enum.toString] 57 1.901 1470.667 1102 2386[java.lang.Enum.toString]
[java.lang.Enum.toString] 58 0.106 1084.000 1084 1084[java.lang.Enum.toString]
[java.lang.Enum.toString] 59 1.373 1266.846 1145 1573[java.lang.Enum.toString]
[java.lang.Enum.toString] 60 2.113 1330.600 1131 1581[java.lang.Enum.toString]
[java.lang.Enum.toString] 61 2.958 1209.321 1083 1670[java.lang.Enum.toString]
[java.lang.Enum.toString] 62 1.056 1364.300 1106 1748[java.lang.Enum.toString]
[java.lang.Enum.toString] 63 0.423 1334.500 1289 1374[java.lang.Enum.toString]
[java.lang.Enum.toString] 64 0.106 1141.000 1141 1141[java.lang.Enum.toString]
[java.lang.Enum.toString] 65 1.162 1330.818 1083 1694[java.lang.Enum.toString]
[java.lang.Enum.toString] 66 0.423 1250.500 1131 1375[java.lang.Enum.toString]
[java.lang.Enum.toString] 67 0.423 1182.250 1102 1337[java.lang.Enum.toString]
[java.lang.Enum.toString] 68 0.211 1120.500 1120 1121[java.lang.Enum.toString]
[java.lang.Enum.toString] 69 0.106 1097.000 1097 1097[java.lang.Enum.toString]
[java.lang.Enum.toString] 70 25.561 1346.455 1084 2808[java.lang.Enum.toString]
[java.lang.Enum.toString] 71 1.162 1133.455 1084 1221[java.lang.Enum.toString]
[java.lang.Enum.toString] 72 6.338 1389.550 1113 2426[java.lang.Enum.toString]
[java.lang.Enum.toString] 73 0.634 1148.333 1089 1231[java.lang.Enum.toString]
[java.lang.Enum.toString] 74 1.796 1360.118 1084 1974[java.lang.Enum.toString]
[java.lang.Enum.toString] 75 0.951 1351.000 1095 1746[java.lang.Enum.toString]
[java.lang.Enum.toString] 76 0.106 1113.000 1113 1113[java.lang.Enum.toString]
[java.lang.Enum.toString] 77 0.634 1129.167 1089 1212[java.lang.Enum.toString]
[java.lang.Enum.toString] 78 0.106 1108.000 1108 1108[java.lang.Enum.toString]
[java.lang.Enum.toString] 79 0.106 1090.000 1090 1090[java.lang.Enum.toString]
[java.lang.Enum.toString] 80 0.106 1105.000 1105 1105[java.lang.Enum.toString]
[java.lang.Enum.toString] 81 0.106 1138.000 1138 1138[java.lang.Enum.toString]
[java.lang.Enum.toString] 82 1.584 1573.533 1103 2296[java.lang.Enum.toString]
[java.lang.Enum.toString] 83 0.106 1108.000 1108 1108[java.lang.Enum.toString]
[java.lang.Enum.toString] 84 0.211 1103.500 1085 1122[java.lang.Enum.toString]
[java.lang.Enum.toString] 85 0.106 1092.000 1092 1092[java.lang.Enum.toString]
[java.lang.Enum.toString] 86 0.211 1103.000 1084 1122[java.lang.Enum.toString]
[java.lang.Enum.toString] 87 2.852 1268.963 1091 1598[java.lang.Enum.toString]
[java.lang.Enum.toString] 88 0.423 1100.750 1083 1122[java.lang.Enum.toString]
[java.lang.Enum.toString] 89 0.106 1110.000 1110 1110[java.lang.Enum.toString]
[java.lang.Enum.toString] 90 0.317 1136.333 1102 1188[java.lang.Enum.toString]
[java.lang.Enum.toString] 91 0.106 1126.000 1126 1126[java.lang.Enum.toString]
[java.lang.Enum.toString] 92 0.106 1116.000 1116 1116[java.lang.Enum.toString]
[java.lang.Enum.toString] 93 0.317 1141.667 1084 1233[java.lang.Enum.toString]
[java.lang.Enum.toString] 94 0.106 1083.000 1083 1083[java.lang.Enum.toString]
[java.lang.Enum.toString] 95 1.479 1183.571 1085 1314[java.lang.Enum.toString]
[java.lang.Enum.toString] 96 0.211 1138.000 1135 1141[java.lang.Enum.toString]
[java.lang.Enum.toString] 97 2.429 1494.130 1084 2113[java.lang.Enum.toString]
[java.lang.Enum.toString] 98 0.211 1125.000 1102 1148[java.lang.Enum.toString]
[java.lang.Enum.toString] 99 0.211 1098.500 1085 1112[java.lang.Enum.toString]
[java.lang.Enum.toString] 100 0.423 1157.250 1100 1208[java.lang.Enum.toString]
[java.lang.Enum.toString] 101 0.739 1273.714 1125 1414[java.lang.Enum.toString]
[java.lang.Enum.toString] 102 0.634 1142.833 1096 1169[java.lang.Enum.toString]
[java.lang.Enum.toString] 103 0.211 1127.500 1099 1156[java.lang.Enum.toString]
[java.lang.Enum.toString] 104 0.739 1239.714 1095 1509[java.lang.Enum.toString]
[java.lang.Enum.toString] 105 0.106 1091.000 1091 1091[java.lang.Enum.toString]
[java.lang.Enum.toString] 106 0.845 1167.000 1084 1255[java.lang.Enum.toString]
[java.lang.Enum.toString] 107 0.211 1085.000 1085 1085[java.lang.Enum.toString]
[java.lang.Enum.toString] 108 1.479 1309.357 1097 1704[java.lang.Enum.toString]
[java.lang.Enum.toString] 109 0.528 1316.600 1211 1587[java.lang.Enum.toString]
[java.lang.Enum.toString] 110 0.951 1314.778 1133 1693[java.lang.Enum.toString]
[java.lang.Enum.toString] 111 0.423 1148.250 1097 1244[java.lang.Enum.toString]
[java.lang.Enum.toString] 112 0.423 1146.500 1103 1165[java.lang.Enum.toString]
[java.lang.Enum.toString] 113 1.373 1357.538 1092 1626[java.lang.Enum.toString]
[java.lang.Enum.toString] 114 0.106 1156.000 1156 1156[java.lang.Enum.toString]
[java.lang.Enum.toString] 115 10.563 1473.170 1084 2716[java.lang.Enum.toString]
[java.lang.Enum.toString] 116 0.211 1161.000 1156 1166[java.lang.Enum.toString]
[java.lang.Enum.toString] 117 0.106 1095.000 1095 1095[java.lang.Enum.toString]
[java.lang.Enum.toString] 118 0.106 1101.000 1101 1101[java.lang.Enum.toString]
[java.lang.Enum.toString] 119 5.176 1373.796 1089 2209[java.lang.Enum.toString]
[java.lang.Enum.toString] 120 0.317 1266.333 1203 1303[java.lang.Enum.toString]
[java.lang.Enum.toString] 121 0.528 1288.200 1110 1490[java.lang.Enum.toString]
[java.lang.Enum.toString] 122 2.113 1429.950 1098 2307[java.lang.Enum.toString]
[java.lang.Enum.toString] 123 1.584 1249.067 1090 1491[java.lang.Enum.toString]
[java.lang.Enum.toString] 124 2.007 1558.421 1099 2453[java.lang.Enum.toString]
[java.lang.Enum.toString] 125 0.106 1112.000 1112 1112[java.lang.Enum.toString]
[java.lang.Enum.toString] 126 1.056 1243.600 1085 1465[java.lang.Enum.toString]
[java.lang.Enum.toString] 127 2.218 1518.762 1094 2666[java.lang.Enum.toString]
[java.lang.Enum.toString] 128 0.211 1172.000 1159 1185[java.lang.Enum.toString]
[java.lang.Enum.toString] 129 0.634 1275.167 1099 1602[java.lang.Enum.toString]
[java.lang.Enum.toString] 130 0.106 1131.000 1131 1131[java.lang.Enum.toString]
[java.lang.Enum.toString] 131 0.106 1277.000 1277 1277[java.lang.Enum.toString]
[java.lang.Enum.toString] 132 0.106 1119.000 1119 1119[java.lang.Enum.toString]
[java.lang.Enum.toString] 133 0.317 1191.000 1130 1236[java.lang.Enum.toString]
[java.lang.Enum.toString] 134 0.106 1163.000 1163 1163[java.lang.Enum.toString]
[java.lang.Enum.toString] 135 0.211 1141.500 1113 1170[java.lang.Enum.toString]
[java.lang.Enum.toString] 136 0.106 1119.000 1119 1119[java.lang.Enum.toString]
ImageJ macro language
It is possible to record workflows in the original ImageJ macro language and run those macros in PyImageJ with ij.py.run_macro()
(see the07-Running-Macros-Scripts-and-Plugins notebook for more information). While this is functional, we do not recommend using the macro language as it is more fragile and less powerful due to the orignal ImageJ internal operations. For example, macros are single threaded only and do not take advantage of multi-threaded processing. For more information on ImageJ macro limitations please visit the macro wiki page.