def handle(self, event): ips = IPy.get_ips() if ips is None: return lut = CurvePanel.lookup(self.curvepan.pts) lut = np.vstack((lut, lut, lut)).T ips.lut = lut ips.update = 'pix'
def on_reset(self, event): self.curvepan.SetValue() ips = IPy.get_ips() if ips is None: return hist = ips.histogram() self.curvepan.set_hist(hist) self.handle(None)
def on_invert(self, event): self.curvepan.SetValue([(0, 255), (255, 0)]) ips = IPy.get_ips() if ips is None: return hist = ips.histogram() self.curvepan.set_hist(hist) self.handle(None)
def on_rgb(self, event, color): ips = IPy.get_ips() if ips is None: return if isinstance(ips.chan, int): ips.chan = [0, 1, 2] chs = ['C:%d' % i for i in range(ips.channels)] for i in (self.com_r, self.com_g, self.com_b): chn = i.GetValue() i.SetItems(chs) idx = chs.index(chn) if chn in chs else 0 i.Select(idx) chanred = ips.chan['rgb'.index(color)] chanrg = ips.chan_range[chanred] rg = ips.get_updown('all', chanred, 512) if (rg[0] == rg[1]): rg = (rg[0] - 1e-4, rg[1] + 1e-4) slis = 'all' if self.chk_stack.GetValue() else ips.cur hist = ips.histogram(rg, slis, chanred, 512) self.histpan.SetValue(hist) self.sli_low.set_para(rg, 10) self.sli_high.set_para(rg, 10) self.sli_low.SetValue(chanrg[0]) self.sli_high.SetValue(chanrg[1]) self.active = ips.chan['rgb'.index(color)] self.range = chanrg lim1 = (chanrg[0] - rg[0]) / (rg[1] - rg[0]) lim2 = (chanrg[1] - rg[0]) / (rg[1] - rg[0]) self.histpan.set_lim(lim1 * 255, lim2 * 255) ips.update()
def on_clear(self, event): ips = IPy.get_ips() if ips is None: return hist = ips.histogram() self.curvepan.set_hist(hist) ips.lut = ColorManager.get_lut() ips.update = 'pix'
def on_chan(self, event, color): ips = IPy.get_ips() if ips is None: return C = (self.com_r, self.com_g, self.com_b) host = C['rgb'.index(color)] chnidx = host.GetSelection() ips.chan['rgb'.index(color)] = chnidx self.on_rgb(event, color)
def on_low( self, event ): ips = IPy.get_ips() if ips is None: return if self.sli_high.GetValue()<self.sli_low.GetValue(): self.sli_high.SetValue(self.sli_low.GetValue()) ips.range = (self.sli_low.GetValue(), self.sli_high.GetValue()) lim1 = 1.0 * (self.sli_low.GetValue() - self.range[0])/(self.range[1]-self.range[0]) lim2 = 1.0 * (self.sli_high.GetValue() - self.range[0])/(self.range[1]-self.range[0]) self.histpan.set_lim(lim1*255, lim2*255) ips.update = 'pix'
def load(self): plus = IPy.get_ips() if plus==None: img = np.ones((30,1), dtype=np.uint8) * np.arange(256, dtype=np.uint8) ips = ImagePlus([img], self.title) ips.lut = ColorManager.get_lut(self.title) IPy.show_ips(ips) return False elif plus.channels != 1: IPy.alert('RGB image do not surport Lookup table!') return False return True
def on_high(self, event): ips = IPy.get_ips() if ips is None: return if self.sli_low.GetValue() > self.sli_high.GetValue(): self.sli_low.SetValue(self.sli_high.GetValue()) rg = (self.sli_low.GetValue(), self.sli_high.GetValue()) ips.chan_range[self.active] = rg minv, maxv = self.sli_low.min, self.sli_high.max lim1 = 1.0 * (self.sli_low.GetValue() - minv) / (maxv - minv) lim2 = 1.0 * (self.sli_high.GetValue() - minv) / (maxv - minv) self.histpan.set_lim(lim1 * 255, lim2 * 255) ips.update()
def on_8bit(self, event): ips = IPy.get_ips() if ips is None: return self.range = ips.range = (0, 255) hist = ips.histogram() self.histpan.SetValue(hist) self.sli_low.set_para((0, 255), 0) self.sli_high.set_para((0, 255), 0) self.sli_low.SetValue(0) self.sli_high.SetValue(255) self.histpan.set_lim(0, 255) ips.update()
def on_minmax(self, event): ips = IPy.get_ips() if ips is None: return minv, maxv = ips.get_updown() self.range = ips.range = (minv, maxv) hist = ips.histogram() self.histpan.SetValue(hist) self.sli_low.set_para(self.range, 10) self.sli_high.set_para(self.range, 10) self.sli_low.SetValue(minv) self.sli_high.SetValue(maxv) self.histpan.set_lim(0, 255) ips.update()
def run(self, para=None): imp = IPy.get_ips() if imp is None: IPy.alert("Please open the image you want to classify", 'Error') return name = imp.title recent = fileio.recent for i in recent: pos1 = i.rfind(os.sep) pos2 = i.rfind('.') if name == i[pos1 + 1:pos2]: image = i className = dc4b.predict(image, self.framework, self.model) IPy.alert("The class which the image belongs is " + className, 'Prediction')
def on_8bit(self, event): ips = IPy.get_ips() if ips is None: return rg = (0, 255) ips.chan_range[self.active] = rg if (rg[0] == rg[1]): rg = (rg[0] - 1e-4, rg[1] + 1e-4) slis = 'all' if self.chk_stack.GetValue() else ips.cur hist = ips.histogram(rg, slis, self.active, 512) self.histpan.SetValue(hist) self.sli_low.set_para(rg, 10) self.sli_high.set_para(rg, 10) self.sli_low.SetValue(rg[0]) self.sli_high.SetValue(rg[1]) self.histpan.set_lim(0, 255) ips.update()
def run(self, para=None): plus = IPy.get_ips() if plus == None: img = np.ones( (30, 1), dtype=np.uint8) * np.arange(256, dtype=np.uint8) ips = ImagePlus([img]) frame = CanvasFrame(IPy.curapp) frame.set_ips(ips) ips.lut = ColorManager.get_lut(self.title) frame.Show() elif plus.chanels != 1: IPy.alert('RGB image do not surport Lookup table!') return else: plus.lut = ColorManager.get_lut(self.title) plus.update = 'pix'
def on_gray(self, event): ips = IPy.get_ips() if ips is None: return if not isinstance(ips.chan, int): ips.chan = 0 chanrg = ips.chan_range[ips.chan] rg = ips.get_updown('all', ips.chan, 512) if (rg[0] == rg[1]): rg = (rg[0] - 1e-4, rg[1] + 1e-4) slis = 'all' if self.chk_stack.GetValue() else ips.cur hist = ips.histogram(rg, slis, ips.chan, 512) self.histpan.SetValue(hist) self.sli_low.set_para(rg, 10) self.sli_high.set_para(rg, 10) self.sli_low.SetValue(chanrg[0]) self.sli_high.SetValue(chanrg[1]) self.active = ips.chan lim1 = (chanrg[0] - rg[0]) / (rg[1] - rg[0]) lim2 = (chanrg[1] - rg[0]) / (rg[1] - rg[0]) self.histpan.set_lim(lim1 * 255, lim2 * 255) ips.update()
def run(self, para=None): imp = IPy.get_ips() if imp is None: IPy.alert("Please open the image you want to classify", 'Error') return name = imp.title recent = fileio.recent for i in recent: pos1 = i.rfind(os.sep) pos2 = i.rfind('.') if name == i[pos1 + 1:pos2]: image = i subprocess.check_output([ self.python, self.pathAPI + 'predict.py', '-i', image, '-f', self.framework, '-m', self.model ]) data = json.load(open('data.json')) className = data['class'] IPy.alert("The class which the image belongs is " + className, 'Prediction')
def on_p(self, event, k): ips = IPy.get_ips() if ips is None: return rg = ips.get_updown('all', self.active, 512) if (rg[0] == rg[1]): rg = (rg[0] - 1e-4, rg[1] + 1e-4) slis = 'all' if self.chk_stack.GetValue() else ips.cur hist = ips.histogram(rg, slis, self.active, 512) msk = np.abs(np.cumsum(hist) / hist.sum() - 0.5) < k / 2 idx = np.where(msk)[0] vs = np.array([idx.min(), idx.max()]) vs = vs * (rg[1] - rg[0]) / 255 + rg[0] ips.chan_range[self.active] = tuple(vs) self.histpan.SetValue(hist) self.sli_low.set_para(rg, 10) self.sli_high.set_para(rg, 10) print(rg, vs) self.sli_low.SetValue(vs[0]) self.sli_high.SetValue(vs[1]) lim1 = (vs[0] - rg[0]) / (rg[1] - rg[0]) lim2 = (vs[1] - rg[0]) / (rg[1] - rg[0]) self.histpan.set_lim(lim1 * 255, lim2 * 255) ips.update()
def on_stack( self, event ): ips = IPy.get_ips() if ips is None: return hists = ips.histogram(slices=True) self.histpan.SetValue(hists)
def on_cmapsel(self): ips = IPy.get_ips() if ips is None: return key = self.cmapsel.GetValue() ips.lut = ColorManager.get_lut(key) ips.update = 'pix'
def on_cmap(self): ips = IPy.get_ips() if ips is None: return cmap = CMapPanel.linear_color(self.cmap.GetValue()) ips.lut = cmap ips.update = 'pix'
def on_stack( self, event ): ips = IPy.get_ips() if ips is None: return hists = ips.histogram(stack=True) self.histpan.set_hist(hists)
def on_slice( self, event ): ips = IPy.get_ips() if ips is None: return hist = ips.histogram() self.histpan.set_hist(hist)
def update(): ips = IPy.get_ips() if not ips is None : ips.update='pix'
def get_ips(): ips = IPy.get_ips() if ips is None: print('no image opened!') return ips
def on_apply(self, event): ips = IPy.get_ips() if ips is None: return hist = ips.histogram() self.curvepan.set_hist(hist) self.handle(None)
def run(self, para=None): plus = IPy.get_ips() plus.lut = ColorManager.get_lut(self.title) plus.update = 'pix'
def on_invert(self, event): if IPy.get_ips() is None: return IPy.get_ips().img[:] = 255 - IPy.get_ips().img IPy.get_ips().update()