MCPcopy Create free account
hub / github.com/Image-Py/imagepy / PointRoi

Class PointRoi

imagepy/core/roi/pointroi.py:13–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11import numpy as np
12
13class PointRoi(ROI):
14 dtype = 'point'
15 def __init__(self, body=None):
16 self.body = body if body!=None else []
17 self.body = [i if len(i)==3 else tuple(i) + (0,) for i in self.body]
18 self.update = body!=[]
19 self.infoupdate = body!=[]
20
21 def add(self, p):
22 self.body.append(p)
23 self.update, self.infoupdate = True, True
24
25 def snap(self, x, y, z, lim):
26 cur, minl = None, 1e8
27 for i in self.body:
28 if z!=i[2]:continue
29 d = (i[0]-x)**2+(i[1]-y)**2
30 if d < minl:cur,minl = i,d
31 if minl**0.5>lim:return None
32 return self.body.index(cur)
33
34 def pick(self, x, y, z, lim):
35 return self.snap(x, y, z, lim)
36
37 def draged(self, ox, oy, nx, ny, nz, i):
38 self.body[i] = (nx, ny, nz)
39 self.update = False
40
41 def countbox(self):
42 self.box = [1000,1000,-1000,-1000]
43 for x, y in self.body:
44 if x<self.box[0]:self.box[0]=x
45 if x>self.box[2]:self.box[2]=x
46 if y<self.box[1]:self.box[1]=y
47 if y>self.box[3]:self.box[3]=y
48
49 def get_box(self):
50 if self.infoupdate:
51 self.countbox()
52 self.infoupdate=False
53 return self.box
54
55 def info(self, ips, cur):
56 k, u = ips.unit
57 if cur==None:return
58 x, y, z = self.body[cur]
59 IPy.set_info('points:%.0f x:%.1f y:%.1f z:%.1f'%(len(self.body), x*k, y*k, z*k))
60
61 def draw(self, dc, f, **key):
62
63
64
65 colormap = (tuple(np.array(RoiManager.get_color())//2), RoiManager.get_color())
66 font = wx.Font(8, wx.FONTFAMILY_DEFAULT,
67 wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False)
68
69 dc.SetFont(font)
70 for c,r,z in self.body:

Callers 8

runMethod · 0.90
runMethod · 0.90
runMethod · 0.90
runMethod · 0.90
runMethod · 0.90
runMethod · 0.90
s2r_pointsFunction · 0.85
s2r_pointFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected