62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
from ijutils import *
|
|
import ch.psi.pshell.imaging.Filter as Filter
|
|
from ch.psi.pshell.imaging.Utils import *
|
|
from ch.psi.pshell.imaging.Overlays import *
|
|
import ch.psi.pshell.imaging.Pen as Pen
|
|
|
|
class MetricsFilter(Filter):
|
|
def __init__(self, metrics):
|
|
self.overlay = Text(Pen(java.awt.Color.GREEN.darker()), "", \
|
|
java.awt.Font("Verdana", java.awt.Font.PLAIN, 12), java.awt.Point(20,20))
|
|
self.metrics = metrics
|
|
self.source = None
|
|
self.renderer = None
|
|
|
|
def process(self, image, data):
|
|
try:
|
|
ip = load_array(data.array, data.width, data.height)
|
|
msg = ""
|
|
if self.metrics is not None:
|
|
for metric in self.metrics:
|
|
val = IJ.getValue(ip,metric)
|
|
msg = msg + "%s = %1.4f\n" % (metric,val)
|
|
self.overlay.update(msg)
|
|
except:
|
|
self.overlay.update(str(sys.exc_info()[1]))
|
|
return image
|
|
|
|
def start(self, source, renderer=None):
|
|
self.stop()
|
|
self.source = source
|
|
self.renderer = renderer if (renderer is not None) else show_panel(source)
|
|
self.source.setFilter(self)
|
|
self.renderer.addOverlay(self.overlay)
|
|
|
|
def stop(self):
|
|
if self.renderer is not None:
|
|
self.renderer.removeOverlay(self.overlay)
|
|
if self.source is not None:
|
|
self.source.setFilter(None)
|
|
self.source = None
|
|
self.renderer = None
|
|
|
|
filter_metrics = None
|
|
|
|
def start_metrics(metrics, source, renderer=None):
|
|
global filter_metrics
|
|
stop_metrics()
|
|
filter_metrics = MetricsFilter(metrics)
|
|
filter_metrics.start(source, renderer)
|
|
|
|
def stop_metrics():
|
|
global filter_metrics
|
|
if filter_metrics is not None:
|
|
filter_metrics.stop()
|
|
filter_metrics = None
|
|
|
|
metrics = ["Area", "Mean", "StdDev", "Mode", "Min", "Max", "X", "Y", "XM", "YM", "Perim.", "BX", "BY", "Width", "Height", "Major", "Minor", "Angle", "Circ.", "Feret", "IntDen", "Median", "Skew", "Kurt", "%Area", "RawIntDen", "Ch", "Slice", "Frame", "FeretX", "FeretY", "FeretAngle", "MinFeret", "AR", "Round", "Solidity", "MinThr", "MaxThr"]
|
|
|
|
#start_metrics (["StdDev"], src1)
|
|
start_metrics (metrics, src1)
|
|
time.sleep(5.0)
|
|
stop_metrics() |