!7 module ImageSegmenter extends DynImageSurface { float contrastThreshold = 0.5f; ReliableSingleThread rst = dm_rst(this, r segmentIt); visualize { JSlider slider = jLiveValueSlider(dm_fieldLiveValue('contrastThreshold)); main.onChange(slider, rst); ret withCenteredLineBelow(super.visualize(), withLabel("Contrast Threshold:", slider)); } start { ownResource(vmBus_onMessage('newClipboardContents, voidfunc(fO o) { if (o cast BufferedImage) { temp enter(); thread { setImage(o); rst.trigger(); } } })); } void segmentIt { temp enter(); if (!hasImage()) ret; new AutoSegmenter as; as.g = 3; as.contrastThreshold = contrastThreshold; overlaySelectionsOnImageSurface(imageSurface, as.go(BWImage(getImage()))); } }