示例#1
0
v1b = w1.addViewBox(row=2, col=0, lockAspect=True)
img1a = pg.ImageItem(arr)
v1a.addItem(img1a)
img1b = pg.ImageItem()
v1b.addItem(img1b)
v1a.disableAutoRange('xy')
v1b.disableAutoRange('xy')
v1a.autoRange()
v1b.autoRange()

rois = []
rois.append(pg.RectROI([20, 20], [20, 20], pen=(0, 9)))
rois[-1].addRotateHandle([1, 0], [0.5, 0.5])
rois.append(pg.LineROI([0, 60], [20, 80], width=5, pen=(1, 9)))
rois.append(
    pg.MultiRectROI([[20, 90], [50, 60], [60, 90]], width=5, pen=(2, 9)))
rois.append(pg.EllipseROI([60, 10], [30, 20], pen=(3, 9)))
rois.append(pg.CircleROI([80, 50], [20, 20], pen=(4, 9)))
#rois.append(pg.LineSegmentROI([[110, 50], [20, 20]], pen=(5,9)))
rois.append(
    pg.PolyLineROI([[80, 60], [90, 30], [60, 40]], pen=(6, 9), closed=True))


def update(roi):
    img1b.setImage(roi.getArrayRegion(arr, img1a), levels=(0, arr.max()))
    v1b.autoRange()


for roi in rois:
    roi.sigRegionChanged.connect(update)
    v1a.addItem(roi)
示例#2
0
def updateRoiPlot(roi, data=None):
    if data is None:
        data = roi.getArrayRegion(im1.image, img=im1)
    if data is not None:
        roi.curve.setData(data.mean(axis=1))


## Create a variety of different ROI types
rois = []
rois.append(
    pg.TestROI([0, 0], [20, 20],
               maxBounds=QtCore.QRectF(-10, -10, 230, 140),
               pen=(0, 9)))
rois.append(pg.LineROI([0, 0], [20, 20], width=5, pen=(1, 9)))
rois.append(pg.MultiRectROI([[0, 50], [50, 60], [60, 30]], width=5,
                            pen=(2, 9)))
rois.append(pg.EllipseROI([110, 10], [30, 20], pen=(3, 9)))
rois.append(pg.CircleROI([110, 50], [20, 20], pen=(4, 9)))
rois.append(pg.PolyLineROI([[2, 0], [2.1, 0], [2, .1]], pen=(5, 9)))
#rois.append(SpiralROI([20,30], [1,1], pen=mkPen(0)))

## Add each ROI to the scene and link its data to a plot curve with the same color
for r in rois:
    v.addItem(r)
    c = pi1.plot(pen=r.pen)
    r.curve = c
    r.sigRegionChanged.connect(updateRoi)


def updateImage():
    global im1, arr, lastRoi