Aluode/PerceptionLabPortable
0
1"""2Demonstrates very basic use of ImageItem to display image data inside a ViewBox.3"""4 5from time import perf_counter6 7import numpy as np8 9import pyqtgraph as pg10from pyqtgraph.Qt import QtCore11 12app = pg.mkQApp("ImageItem Example")13 14## Create window with GraphicsView widget15win = pg.GraphicsLayoutWidget()16win.show() ## show widget alone in its own window17win.setWindowTitle('pyqtgraph example: ImageItem')18view = win.addViewBox()19 20## lock the aspect ratio so pixels are always square21view.setAspectLocked(True)22 23## Create image item24img = pg.ImageItem(border='w')25view.addItem(img)26 27## Set initial view bounds28view.setRange(QtCore.QRectF(0, 0, 600, 600))29 30## Create random image31data = np.random.normal(size=(15, 600, 600), loc=1024, scale=64).astype(np.uint16)32i = 033 34updateTime = perf_counter()35elapsed = 036 37timer = QtCore.QTimer()38timer.setSingleShot(True)39# not using QTimer.singleShot() because of persistence on PyQt. see PR #160540 41def updateData():42 global img, data, i, updateTime, elapsed43 44 ## Display the data45 img.setImage(data[i])46 i = (i+1) % data.shape[0]47 48 timer.start(1)49 now = perf_counter()50 elapsed_now = now - updateTime51 updateTime = now52 elapsed = elapsed * 0.9 + elapsed_now * 0.153 54 # print(f"{1 / elapsed:.1f} fps")55 56timer.timeout.connect(updateData)57updateData()58 59if __name__ == '__main__':60 pg.exec()61 