Example #1
0
class PreviewDisplay(Ui_PreviewDisplayWnd, PyQt4.QtGui.QMainWindow):
    def __init__(self, parent=None, tiffSequence=None, cropL=None):
        PyQt4.QtGui.QMainWindow.__init__(self, parent=parent)
        self.setupUi(self)
        #l = dir(self.CurrentFrameSlider)
        #for i in l:
        #	print(i)
        self.RoboMainWnd = parent

        hlay = PyQt4.QtGui.QHBoxLayout(self.ImageFrameWidget)
        imWidget = ImageDisplayWidget(self)

        self.imWidget = imWidget
        hlay.addWidget(imWidget)

        self.imWidget.createShaders()

        if tiffSequence is not None:
            self.tiffSequence = tiffSequence
            try:
                img2 = tiffSequence.getFramesInterval(1, 10)
                img = img2.mean(2)
            except:
                img = tiffSequence.getFrame(0)
        else:
            self.close()

        self.connect(self.imWidget, SIGNAL("roiAdded(long)"), self.roiAdded)
        self.connect(self.imWidget, SIGNAL("roiRecomputeNeeded(bool)"),
                     self.roiAdded)

        self.imWidget.computeRoiPointMaps = False
        self.frameHeight = img.shape[
            0]  # int(ceil(sqrt(img.shape[0]**2 + img.shape[1]**2)))
        self.frameWidth = img.shape[1]  #self.frameHeight
        self.optionsDlg = ProcessOptions(self)
        self.roiMonitor = False
        self.imWidget.ImageZoom = 0.3
        self.imWidget.ImageZoomSteps = -5.4

        if cropL is not None:
            a, b, c, d = cropL
            roi = Roi()
            roi.addPoint(a, c)
            roi.addPoint(b, c)
            roi.addPoint(b, d)
            roi.addPoint(a, d)
            self.imWidget.addRoi(roi, False)
        self.FrameImage, self.FrameData = self.loadImageGray(img)
        self.updateDisplay()
        self.show()

    def loadImageGray(self, im, needQImage=True):

        if im is None:
            return None

        # if self.displayParameters.autoAdjust:
        # 	self.changeDisplayGrayMin(im.min())
        # 	self.changeDisplayGrayMax(im.max())

        #if viewType == 0:
        tex = self.imWidget.processData(list([im]), list([0]),
                                        list([list([im.min(),
                                                    im.max()])]))
        return tex, im
        #else:
        #	return None, None

    def updateDisplay(self):

        if self.FrameImage == None:
            return

        h, w = self.frameHeight, self.frameWidth

        self.imWidget.currentDrawData["tex"] = self.FrameImage
        self.imWidget.currentDrawData["width"] = w
        self.imWidget.currentDrawData["height"] = h
        self.imWidget.updateGL()

    def roiAdded(self):
        if len(self.imWidget.rois) > 1:
            self.imWidget.deleteRoi(0)

        rf = self.imWidget.rois[0].boundingRect()
        [a, b, c, d] = [
            rf.left(),
            rf.left() + rf.width(),
            rf.top(),
            rf.top() + rf.height()
        ]
        #	print [a,b,c,d]
        self.emit(SIGNAL("roiChanged(int, int, int, int)"), a, b, c, d)

    def closeEvent(self, event):
        # do stuff

        self.optionsDlg.close()
        event.accept()  # let the window close