示例#1
0
 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'
示例#2
0
 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)
示例#3
0
 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)
示例#4
0
 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()
示例#5
0
 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'
示例#6
0
 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)
示例#7
0
	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'
示例#8
0
 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
示例#9
0
 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()
示例#10
0
 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()
示例#11
0
 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')
示例#13
0
 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()
示例#14
0
    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'
示例#15
0
 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')
示例#17
0
 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()
示例#18
0
	def on_stack( self, event ):
		ips = IPy.get_ips()
		if ips is None: return
		hists = ips.histogram(slices=True)
		self.histpan.SetValue(hists)
示例#19
0
	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'
示例#20
0
	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'
示例#21
0
	def on_stack( self, event ):
		ips = IPy.get_ips()
		if ips is None: return
		hists = ips.histogram(stack=True)
		self.histpan.set_hist(hists)
示例#22
0
	def on_slice( self, event ):
		ips = IPy.get_ips()
		if ips is None: return
		hist = ips.histogram()
		self.histpan.set_hist(hist)
示例#23
0
def update():
    ips = IPy.get_ips()
    if not ips is None : 
        ips.update='pix'
示例#24
0
def get_ips():
    ips = IPy.get_ips()
    if ips is None:
        print('no image opened!')
    return ips
示例#25
0
 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)
示例#26
0
 def run(self, para=None):
     plus = IPy.get_ips()
     plus.lut = ColorManager.get_lut(self.title)
     plus.update = 'pix'
示例#27
0
 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()