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)
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