def mouse_down(self, ips, x, y, btn, **key): lim = 5.0 / key['canvas'].get_scale() if btn == 1 or btn == 3: if ips.roi != None: self.curobj = ips.roi.pick(x, y, lim) if not self.curobj in (None, True): return if ips.roi == None: msk = floodfill(ips.img, x, y, self.para['tor'], self.para['con'] == '8-connect') conts = find_contours(msk, 0, 'high') ips.roi = shape2roi(polygonize(conts, btn == 3)) elif hasattr(ips.roi, 'topolygon'): shp = roi2shape(ips.roi.topolygon()) oper = '' if key['shift']: oper = '+' elif key['ctrl']: oper = '-' elif self.curobj: return else: ips.roi = None msk = floodfill(ips.img, x, y, self.para['tor'], self.para['con'] == '8-connect') conts = find_contours(msk, 0, 'high') cur = polygonize(conts, btn == 3) if oper == '+': ips.roi = shape2roi(shp.union(cur)) elif oper == '-': ips.roi = shape2roi(shp.difference(cur)) else: ips.roi = shape2roi(cur) else: ips.roi = None ips.update()
def mouse_down(self, ips, x, y, btn, **key): ips.snapshot() msk = floodfill(ips.img, x, y, self.para['tor'], self.para['con']=='8-connect') #plt.imshow(msk) #plt.show() color = ColorManager.get_front() if ips.get_nchannels()==1:color = np.mean(color) ips.img[msk] = color ips.update = 'pix'