add fixed target ROI
This commit is contained in:
@@ -241,6 +241,94 @@ class Path(pg.ROI):
|
|||||||
lv=QLineF(x, y-5*ry, x, y+5*ry)
|
lv=QLineF(x, y-5*ry, x, y+5*ry)
|
||||||
p.drawLines(lh,lv)
|
p.drawLines(lh,lv)
|
||||||
|
|
||||||
|
class FixTargetFrame(pg.ROI):
|
||||||
|
'''fixed target frame'''
|
||||||
|
tpl={
|
||||||
|
'test':{
|
||||||
|
'size':(120*15, 120*11),
|
||||||
|
'fiducial':{
|
||||||
|
'type':0,
|
||||||
|
'pos':((120*2, 120*2), (120*13, 120*2), (120*2, 120*9), (120*13, 120*9))
|
||||||
|
},
|
||||||
|
'grid':{
|
||||||
|
'pos':(120*4, 120*3),
|
||||||
|
'pitch':(120, 120),
|
||||||
|
'count':(8, 6)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'125x125':{
|
||||||
|
'size':(12500+120*4, 12500+120*4),
|
||||||
|
'fiducial':{
|
||||||
|
'type':0,
|
||||||
|
'pos':((240, 240), (240+12500, 240), (240, 240+12500), (240+12500, 240+12500))
|
||||||
|
},
|
||||||
|
'grid':{
|
||||||
|
'pos':(1050, 1050),
|
||||||
|
'pitch':(120, 120),
|
||||||
|
'count':(90, 90)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def __init__( self, pos=(0,0), size=(100,100), tpl='test', **kargs):
|
||||||
|
pg.ROI.__init__(self, pos, size, **kargs)
|
||||||
|
#fiducial type 0: 5 squares with pitch 120 um
|
||||||
|
self._dscr=FixTargetFrame.tpl[tpl]
|
||||||
|
|
||||||
|
self.addScaleHandle([1, 1], [0, 0])
|
||||||
|
self.addScaleHandle([0, 0], [1, 1])
|
||||||
|
self.addScaleRotateHandle([1, 0], [0, 0])
|
||||||
|
|
||||||
|
def paint(self, p, *args):
|
||||||
|
#pg.ROI.paint(self, p, *args)
|
||||||
|
sz=self.state['size']
|
||||||
|
#nx, ny=self._cnt
|
||||||
|
#px, py=sz[0]/(nx-1), sz[1]/(ny-1)
|
||||||
|
r=QtCore.QRectF(0, 0, sz[0], sz[1]).normalized()
|
||||||
|
p.setRenderHint(QtGui.QPainter.Antialiasing)
|
||||||
|
p.setPen(self.currentPen)
|
||||||
|
p.drawRect(0, 0, int(sz[0]), int(sz[1]))
|
||||||
|
|
||||||
|
dscr=self._dscr
|
||||||
|
objSz=dscr['size']
|
||||||
|
p.translate(r.left(), r.top())
|
||||||
|
p.scale(r.width()/objSz[0], r.height()/objSz[1]) # -> values x,y 0 to 13000
|
||||||
|
|
||||||
|
dscr=self._dscr
|
||||||
|
|
||||||
|
g=dscr['grid']
|
||||||
|
ox,oy=g['pos']
|
||||||
|
px,py=g['pitch']
|
||||||
|
nx,ny=g['count']
|
||||||
|
#x0=ox; x1=ox+(ny-1)*py
|
||||||
|
#y0=oy; y1=oy+(nx-1)*px
|
||||||
|
x0=ox-.5*px; x1=ox+(nx-.5)*px
|
||||||
|
y0=oy-.5*py; y1=oy+(ny-.5)*py
|
||||||
|
for i in range(nx):
|
||||||
|
x=ox+i*px
|
||||||
|
p.drawLine(pg.Point(x, y0), pg.Point(x, y1))
|
||||||
|
|
||||||
|
for i in range(ny):
|
||||||
|
y=oy+i*py
|
||||||
|
p.drawLine(pg.Point(x0, y), pg.Point(x1 ,y ))
|
||||||
|
|
||||||
|
f=dscr['fiducial']
|
||||||
|
rx=50
|
||||||
|
ry=50
|
||||||
|
|
||||||
|
p.setPen(pg.mkPen(width=1, color=(255, 0, 0)))
|
||||||
|
if f['type']==0:
|
||||||
|
for p0 in f['pos']:
|
||||||
|
p0=np.array(p0)
|
||||||
|
for p1 in ((-120,-120),(120,-120),(0,0),(-120,120),(120,120),):
|
||||||
|
p1=np.array(p1)
|
||||||
|
x, y=p0+p1 ;print(x,y)
|
||||||
|
lh=QLineF(x-rx, y, x+rx, y)
|
||||||
|
lv=QLineF(x, y-ry, x, y+ry)
|
||||||
|
p.drawLines(lh, lv)
|
||||||
|
else:
|
||||||
|
assert('unknown feducial type')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TxtROI(pg.ROI):
|
class TxtROI(pg.ROI):
|
||||||
@@ -396,6 +484,11 @@ if __name__=='__main__':
|
|||||||
#vi.setTransform(tr) # assign transform
|
#vi.setTransform(tr) # assign transform
|
||||||
vb.addItem(vi)
|
vb.addItem(vi)
|
||||||
|
|
||||||
|
vi=FixTargetFrame((100,300),(100,100),tpl='test')
|
||||||
|
vb.addItem(vi)
|
||||||
|
vi=FixTargetFrame((400,-200),(400,400),tpl='125x125')
|
||||||
|
vb.addItem(vi)
|
||||||
|
|
||||||
childTree(vb)
|
childTree(vb)
|
||||||
|
|
||||||
w.scene().sigMouseClicked.connect(mouse_click_event)
|
w.scene().sigMouseClicked.connect(mouse_click_event)
|
||||||
|
|||||||
Reference in New Issue
Block a user