コード例 #1
0
ファイル: magic_tol.py プロジェクト: xsyp/imagepy
    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()
コード例 #2
0
ファイル: floodfill_tol.py プロジェクト: zhuzhs/imagepy
 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'