混合pyqt和qtcreator (2): Impl a image viewer (can show FIji ROI manager data)
# -*- coding: utf-8 -*- """ Simple demonstration of TreeWidget, which is an extension of QTreeWidget that allows widgets to be added and dragged within the tree more easily. """ import initExample ## Add path to library (just for examples; you do not need this) import pyqtgraph as pg from pyqtgraph.Qt import QtCore, QtGui, uic import numpy as np import sys import cv2 from read_roi import read_roi_zip import os pg.setConfigOption('imageAxisOrder','row-major') def rand(n): data = np.random.random(n) data[int(n * 0.1):int(n * 0.13)] += .5 data[int(n * 0.18)] += 2 data[int(n * 0.1):int(n * 0.13)] *= 5 data[int(n * 0.18)] *= 20 data *= 1e-12 return data, np.arange(n, n + len(data)) / float(n) def plotRectData(x,y,w,h): return {'x':[x,x,x+w,x+w,x], 'y':[y, y+h, y+h, y,y]} class MyWindow(QtGui.QMainWindow): def onListItemChanged(self, item): print (item.text()) buff = item.text() roizip = buff.split('.')[0] + '.zip' rois={} if os.path.isfile(roizip): rois = read_roi_zip(roizip) if 0: pw = pg.PlotWidget(name='Plot1') self.horizontalLayout.addWidget(pw) p1 = pw.plot() p1.setPen((200, 200, 100)) yd, xd = rand(10000) p1.setData(y=yd, x=xd) elif 0: imv = pg.ImageView() self.horizontalLayout.addWidget(imv) im = cv2.imread("buffer00.bmp") imv.setImage(im) else: plot = self.plot plot.clear() imagedata = cv2.imread(buff) # imagedata2 = np.swapaxes(imagedata,0,1) imagedata2 = imagedata # imagedata2 = np.fliplr(np.rot90(imagedata, 1)) ii = pg.ImageItem(imagedata2) plot.addItem(ii) #dsts =plotRectData(100,200,300,100) #plot.plot(dsts['x'],dsts['y'], pen=(255,0,0), name="Red curve") for k in list(rois.keys()): roi = rois[k] if roi['type']=='rectangle': [x,y,w,h]=[int(t)for t in [roi['left'], roi['top'], roi['width'], roi['height']]] dsts = plotRectData(x,y,w,h) plot.plot(dsts['x'], dsts['y'], pen=(255, 0, 0)) text = pg.TextItem(k) plot.addItem(text) text.setPos(x,y) elif roi['type']=='polygon': y = [int(t)for t in roi['y']] x = [int(t) for t in roi['x']] y.append(y[0]) x.append(x[0]) plot.plot(x, y, pen=(255, 0, 0)) text = pg.TextItem(k) plot.addItem(text) text.setPos(x[0], y[0]) #plot.hideAxis('left') #plot.hideAxis('bottom') def __init__(self): super(MyWindow, self).__init__() uic.loadUi('mywindow.ui', self) self.buffers=['buffer00.bmp','buffer01.bmp','buffer02.bmp'] self.actionLoad_Image.triggered.connect(self.myactionLoad_Image) m_listeWidget = self.listWidget m_listeWidget.setViewMode(m_listeWidget.IconMode) m_listeWidget.setIconSize(QtCore.QSize(200, 200)) m_listeWidget.setResizeMode(QtGui.QListWidget.Adjust) for buff in self.buffers: m_listeWidget.addItem(QtGui.QListWidgetItem(QtGui.QIcon(buff), buff)) m_listeWidget.itemClicked.connect(self.onListItemChanged) win = pg.GraphicsWindow() self.horizontalLayout.addWidget(win) self.plot = win.addPlot() self.show() def myactionLoad_Image(self): print ('hello') if __name__ == '__main__': app = QtGui.QApplication(sys.argv) window = MyWindow() sys.exit(app.exec_())