Exemplo n.º 1
0
    def recordPlot(self):
        # Make the temporary directory
        if not os.path.exists("./temp/"):
            os.mkdir("./temp")

        # Choose file location
        dialog = QFileDialog()
        fl = dialog.getSaveFileName(self.window, "Save Video", "",
                                    "MP4 file (*.mp4)")
        if fl[0] == "":
            return

        # Update UI So the user doesnt get confused
        self.btRecord.setText("Recording")
        self.btRecord.setStyleSheet("background-color: red")
        out = cv2.VideoWriter(fl[0], cv2.VideoWriter_fourcc(*'DIVX'), 30,
                              (800, 600))
        # Loop through each frame and create file. Use created file to make video
        for i in range(self.slideStart.value(), self.slideEnd.value()):
            self.frame = i
            self.plotData()
            d = self.plot.renderToArray((800, 600))
            pg.makeQImage(d).save("./temp/test" + str(i) + ".png")
            img = cv2.imread("./temp/test" + str(i) + ".png")
            out.write(img)
        # Erase image files after creation
        for i in range(self.slideStart.value(), self.slideEnd.value()):
            os.remove("./temp/test" + str(i) + ".png")
        out.release()
        self.btRecord.setText("Record")
        self.btRecord.setStyleSheet(self.recordStyle)
Exemplo n.º 2
0
    def set_data(self, data):
        self.v.setData(data)
        if not self.centered:
            self.v.resetTransform()
            self.v.translate(-data.shape[0] / 2, -data.shape[1] / 2, -data.shape[2] / 2)
            self.centered = True

        d = self.renderToArray((1920, 1080))
        image_file_path = self.latest_test_dir_path.joinpath(self.latest_task_name + ".png").as_posix()
        print(image_file_path)
        pg.makeQImage(d, alpha=False).save(image_file_path)
Exemplo n.º 3
0
 def export(self, fileName=None):
     if fileName is None:
         filter = ["*."+str(f) for f in QtGui.QImageWriter.supportedImageFormats()]
         preferred = ['*.png', '*.tif', '*.jpg']
         for p in preferred[::-1]:
             if p in filter:
                 filter.remove(p)
                 filter.insert(0, p)
         self.fileSaveDialog(filter=filter)
         return
         
     targetRect = QtCore.QRect(0, 0, self.params['width'], self.params['height'])
     sourceRect = self.getSourceRect()
     #self.png = QtGui.QImage(targetRect.size(), QtGui.QImage.Format_ARGB32)
     #self.png.fill(pyqtgraph.mkColor(self.params['background']))
     bg = np.empty((self.params['width'], self.params['height'], 4), dtype=np.ubyte)
     color = self.params['background']
     bg[:,:,0] = color.blue()
     bg[:,:,1] = color.green()
     bg[:,:,2] = color.red()
     bg[:,:,3] = color.alpha()
     self.png = pg.makeQImage(bg, alpha=True)
     painter = QtGui.QPainter(self.png)
     try:
         self.setExportMode(True, {'antialias': self.params['antialias'], 'background': self.params['background']})
         painter.setRenderHint(QtGui.QPainter.Antialiasing, self.params['antialias'])
         self.getScene().render(painter, QtCore.QRectF(targetRect), sourceRect)
     finally:
         self.setExportMode(False)
     self.png.save(fileName)
     painter.end()
     
     
Exemplo n.º 4
0
    def render(self):
        #Convert data to QImage for display.
        
        #profile = debug.Profiler()
        if self.image is None or self.image.size == 0:
            return
        if isinstance(self.lut, collections.Callable):
            lut = self.lut(self.image)
        else:
            lut = self.lut

        if False:#self.autoDownsample:
            # reduce dimensions of image based on screen resolution
            o = self.mapToDevice(QtCore.QPointF(0,0))
            x = self.mapToDevice(QtCore.QPointF(1,0))
            y = self.mapToDevice(QtCore.QPointF(0,1))
            w = Point(x-o).length()
            h = Point(y-o).length()
            xds = int(1/max(1, w))
            yds = int(1/max(1, h))
            image = pg.downsample(self.image, xds, axis=0)
            image = pg.downsample(image, yds, axis=1)
        else:
            image = self.image


        
        imageRGBA = makeRGBAImage(image,self.cppLut)
        imageNew = imageRGBA
        argb, alpha =  pg.makeARGB(imageNew.transpose((1, 0, 2)[:imageNew.ndim]), lut=None, levels=None)
        self.qimage = pg.makeQImage(argb, alpha, transpose=False)
Exemplo n.º 5
0
    def render(self):
        # simplified pg.ImageITem

        if self.image is None or self.image.size == 0:
            return
        if isinstance(self.lut, collections.Callable):
            lut = self.lut(self.image)
        else:
            lut = self.lut

        image = self.image
        levels = self.levels

        if self.axisOrder == 'col-major':
            image = image.transpose((1, 0, 2)[:image.ndim])

        argb, alpha = pg.makeARGB(image, lut=lut, levels=levels)  # format is bgra
        argb[np.isnan(image)] = (100, 100, 100, 255)  # replace unknown values with a color
        w = 1
        if np.any(self.selection):
            max_sel = np.max(self.selection)
            colors = DiscreteVariable(values=map(str, range(max_sel))).colors
            fargb = argb.astype(np.float32)
            for i, color in enumerate(colors):
                color = np.hstack((color[::-1], [255]))  # qt color
                sel = self.selection == i+1
                # average the current color with the selection color
                argb[sel] = (fargb[sel] + w*color) / (1+w)
            alpha = True
            argb[:, :, 3] = np.maximum((self.selection > 0)*255, 100)
        self.qimage = pg.makeQImage(argb, alpha, transpose=False)
Exemplo n.º 6
0
    def render(self):
        # simplified pg.ImageITem

        if self.image is None or self.image.size == 0:
            return
        if isinstance(self.lut, collections.Callable):
            lut = self.lut(self.image)
        else:
            lut = self.lut

        image = self.image
        levels = self.levels

        if self.axisOrder == 'col-major':
            image = image.transpose((1, 0, 2)[:image.ndim])

        argb, alpha = pg.makeARGB(image, lut=lut, levels=levels)  # format is bgra
        argb[np.isnan(image)] = (100, 100, 100, 255)  # replace unknown values with a color
        w = 1
        if np.any(self.selection):
            max_sel = np.max(self.selection)
            colors = DiscreteVariable(values=map(str, range(max_sel))).colors
            fargb = argb.astype(np.float32)
            for i, color in enumerate(colors):
                color = np.hstack((color[::-1], [255]))  # qt color
                sel = self.selection == i+1
                # average the current color with the selection color
                argb[sel] = (fargb[sel] + w*color) / (1+w)
            alpha = True
            argb[:, :, 3] = np.maximum((self.selection > 0)*255, 100)
        self.qimage = pg.makeQImage(argb, alpha, transpose=False)
 def get_image_to_save(self, quality):
     image1 = self.grabFrameBuffer(False)
     width1 = image1.width()
     height1 = image1.height()
     width2 = 200 * quality
     factor = width2 / width1
     length2 = int(factor * height1)
     self.xygrid.setThickness(self.size_grid * factor)
     self.yzgrid.setThickness(self.size_grid * factor)
     self.xzgrid.setThickness(self.size_grid * factor)
     self.scatter_plot.setData(pos=self.pos,
                               size=1.2 * factor * self.size_traj,
                               color=self.color,
                               pxMode=False)
     self.scatter_plot.setGLOptions('opaque')
     image = pg.makeQImage(self.renderToArray((width2, length2)))
     self.xygrid.setThickness(self.size_grid)
     self.yzgrid.setThickness(self.size_grid)
     self.xzgrid.setThickness(self.size_grid)
     self.scatter_plot.setData(pos=self.pos,
                               size=self.size_traj,
                               color=self.color,
                               pxMode=False)
     self.scatter_plot.setGLOptions('opaque')
     return image
Exemplo n.º 8
0
    def export(self, fileName=None, toBytes=False, copy=False):
        if fileName is None and not toBytes and not copy:
            filter = [
                "*." + str(f)
                for f in QtGui.QImageWriter.supportedImageFormats()
            ]
            preferred = ['*.png', '*.tif', '*.jpg']
            for p in preferred[::-1]:
                if p in filter:
                    filter.remove(p)
                    filter.insert(0, p)
            self.fileSaveDialog(filter=filter)
            return

        targetRect = QtCore.QRect(0, 0, self.params['width'],
                                  self.params['height'])
        sourceRect = self.getSourceRect()

        #self.png = QtGui.QImage(targetRect.size(), QtGui.QImage.Format_ARGB32)
        #self.png.fill(pyqtgraph.mkColor(self.params['background']))
        bg = np.empty((self.params['width'], self.params['height'], 4),
                      dtype=np.ubyte)
        color = self.params['background']
        bg[:, :, 0] = color.blue()
        bg[:, :, 1] = color.green()
        bg[:, :, 2] = color.red()
        bg[:, :, 3] = color.alpha()
        self.png = pg.makeQImage(bg, alpha=True)

        ## set resolution of image:
        origTargetRect = self.getTargetRect()
        resolutionScale = targetRect.width() / origTargetRect.width()
        #self.png.setDotsPerMeterX(self.png.dotsPerMeterX() * resolutionScale)
        #self.png.setDotsPerMeterY(self.png.dotsPerMeterY() * resolutionScale)

        painter = QtGui.QPainter(self.png)
        #dtr = painter.deviceTransform()
        try:
            self.setExportMode(
                True, {
                    'antialias': self.params['antialias'],
                    'background': self.params['background'],
                    'painter': painter,
                    'resolutionScale': resolutionScale
                })
            painter.setRenderHint(QtGui.QPainter.Antialiasing,
                                  self.params['antialias'])
            self.getScene().render(painter, QtCore.QRectF(targetRect),
                                   QtCore.QRectF(sourceRect))
        finally:
            self.setExportMode(False)
        painter.end()

        if copy:
            QtGui.QApplication.clipboard().setImage(self.png)
        elif toBytes:
            return self.png
        else:
            self.png.save(fileName)
Exemplo n.º 9
0
    def export(self, fileName=None, toBytes=False, copy=False):
        if fileName is None and not toBytes and not copy:
            if USE_PYSIDE:
                filter = ["*." + str(f) for f in QtGui.QImageWriter.supportedImageFormats()]
            else:
                filter = ["*." + bytes(f).decode("utf-8") for f in QtGui.QImageWriter.supportedImageFormats()]
            preferred = ["*.png", "*.tif", "*.jpg"]
            for p in preferred[::-1]:
                if p in filter:
                    filter.remove(p)
                    filter.insert(0, p)
            self.fileSaveDialog(filter=filter)
            return

        targetRect = QtCore.QRect(0, 0, self.params["width"], self.params["height"])
        sourceRect = self.getSourceRect()

        # self.png = QtGui.QImage(targetRect.size(), QtGui.QImage.Format_ARGB32)
        # self.png.fill(pyqtgraph.mkColor(self.params['background']))
        bg = np.empty((self.params["width"], self.params["height"], 4), dtype=np.ubyte)
        color = self.params["background"]
        bg[:, :, 0] = color.blue()
        bg[:, :, 1] = color.green()
        bg[:, :, 2] = color.red()
        bg[:, :, 3] = color.alpha()
        self.png = pg.makeQImage(bg, alpha=True)

        ## set resolution of image:
        origTargetRect = self.getTargetRect()
        resolutionScale = targetRect.width() / origTargetRect.width()
        # self.png.setDotsPerMeterX(self.png.dotsPerMeterX() * resolutionScale)
        # self.png.setDotsPerMeterY(self.png.dotsPerMeterY() * resolutionScale)

        painter = QtGui.QPainter(self.png)
        # dtr = painter.deviceTransform()
        try:
            self.setExportMode(
                True,
                {
                    "antialias": self.params["antialias"],
                    "background": self.params["background"],
                    "painter": painter,
                    "resolutionScale": resolutionScale,
                },
            )
            painter.setRenderHint(QtGui.QPainter.Antialiasing, self.params["antialias"])
            self.getScene().render(painter, QtCore.QRectF(targetRect), QtCore.QRectF(sourceRect))
        finally:
            self.setExportMode(False)
        painter.end()

        if copy:
            QtGui.QApplication.clipboard().setImage(self.png)
        elif toBytes:
            return self.png
        else:
            self.png.save(fileName)
Exemplo n.º 10
0
 def export(self, fileName=None, toBytes=False, copy=False):
     if fileName is None and not toBytes and not copy:
         if USE_PYSIDE:
             filter = ["*."+str(f) for f in QtGui.QImageWriter.supportedImageFormats()]
         else:
             filter = ["*."+bytes(f).decode('utf-8') for f in QtGui.QImageWriter.supportedImageFormats()]
         preferred = ['*.png', '*.tif', '*.jpg']
         for p in preferred[::-1]:
             if p in filter:
                 filter.remove(p)
                 filter.insert(0, p)
         self.fileSaveDialog(filter=filter)
         return
         
     targetRect = QtCore.QRect(0, 0, self.params['width'], self.params['height'])
     sourceRect = self.getSourceRect()
     
     
     #self.png = QtGui.QImage(targetRect.size(), QtGui.QImage.Format_ARGB32)
     #self.png.fill(pyqtgraph.mkColor(self.params['background']))
     w, h = self.params['width'], self.params['height']
     if w == 0 or h == 0:
         raise Exception("Cannot export image with size=0 (requested export size is %dx%d)" % (w,h))
     bg = np.empty((self.params['width'], self.params['height'], 4), dtype=np.ubyte)
     color = self.params['background']
     bg[:,:,0] = color.blue()
     bg[:,:,1] = color.green()
     bg[:,:,2] = color.red()
     bg[:,:,3] = color.alpha()
     self.png = pg.makeQImage(bg, alpha=True)
     
     ## set resolution of image:
     origTargetRect = self.getTargetRect()
     resolutionScale = targetRect.width() / origTargetRect.width()
     #self.png.setDotsPerMeterX(self.png.dotsPerMeterX() * resolutionScale)
     #self.png.setDotsPerMeterY(self.png.dotsPerMeterY() * resolutionScale)
     
     painter = QtGui.QPainter(self.png)
     #dtr = painter.deviceTransform()
     try:
         self.setExportMode(True, {'antialias': self.params['antialias'], 'background': self.params['background'], 'painter': painter, 'resolutionScale': resolutionScale})
         painter.setRenderHint(QtGui.QPainter.Antialiasing, self.params['antialias'])
         self.getScene().render(painter, QtCore.QRectF(targetRect), QtCore.QRectF(sourceRect))
     finally:
         self.setExportMode(False)
     painter.end()
     
     if copy:
         QtGui.QApplication.clipboard().setImage(self.png)
     elif toBytes:
         return self.png
     else:
         self.png.save(fileName)
Exemplo n.º 11
0
	def     update(self):
		fileHdf5  = h5py.File(self.allFiles[self.current], "r")
		conData   = fileHdf5['/energy/density']['cTheta'].value.reshape(self.Lx,self.Lx,self.Lz)

		meanData  = np.mean(conData)
		conData	  = conData/meanData
		self.data = np.zeros(conData.shape + (4,), dtype=np.ubyte)
		pData     = np.clip(conData, 0, 10)**2
		self.data[..., 0] = pData * (255./pData.max())
		self.data[..., 1] = self.data[..., 0]
		self.data[..., 2] = self.data[..., 0]
		self.data[..., 3] = ((self.data[...,0].astype(float)/255.)**2)*255

		self.z    = fileHdf5['/'].attrs.get("z")
		self.view.updateZ(self.z)
		self.plt.setData(data=self.data)
		#self.view.grabFrameBuffer().save("img.%04d.png" % self.current)
		img = self.view.renderToArray((1920, 1080))
		pg.makeQImage(img).save("img.%04d.png" % self.current)

		self.current = (self.current+self.step)
		fileHdf5.close()
		if self.current >= self.nFiles:
			QtGui.QApplication.instance().closeAllWindows()
Exemplo n.º 12
0
    def export(self, fileName=None):
        if fileName is None:
            filter = [
                "*." + str(f)
                for f in QtGui.QImageWriter.supportedImageFormats()
            ]
            preferred = ['*.png', '*.tif', '*.jpg']
            for p in preferred[::-1]:
                if p in filter:
                    filter.remove(p)
                    filter.insert(0, p)
            self.fileSaveDialog(filter=filter)
            return

        targetRect = QtCore.QRect(0, 0, self.params['width'],
                                  self.params['height'])
        sourceRect = self.getSourceRect()
        #self.png = QtGui.QImage(targetRect.size(), QtGui.QImage.Format_ARGB32)
        #self.png.fill(pyqtgraph.mkColor(self.params['background']))
        bg = np.empty((self.params['width'], self.params['height'], 4),
                      dtype=np.ubyte)
        color = self.params['background']
        bg[:, :, 0] = color.blue()
        bg[:, :, 1] = color.green()
        bg[:, :, 2] = color.red()
        bg[:, :, 3] = color.alpha()
        self.png = pg.makeQImage(bg, alpha=True)
        painter = QtGui.QPainter(self.png)
        try:
            self.setExportMode(
                True, {
                    'antialias': self.params['antialias'],
                    'background': self.params['background']
                })
            painter.setRenderHint(QtGui.QPainter.Antialiasing,
                                  self.params['antialias'])
            self.getScene().render(painter, QtCore.QRectF(targetRect),
                                   sourceRect)
        finally:
            self.setExportMode(False)
        self.png.save(fileName)
        painter.end()
Exemplo n.º 13
0
    def render(self):
        # simplified pg.ImageITem

        if self.image is None or self.image.size == 0:
            return
        if isinstance(self.lut, collections.Callable):
            lut = self.lut(self.image)
        else:
            lut = self.lut

        image = self.image
        levels = self.levels

        if self.axisOrder == 'col-major':
            image = image.transpose((1, 0, 2)[:image.ndim])

        argb, alpha = pg.makeARGB(image, lut=lut, levels=levels)
        argb[np.isnan(image)] = (100, 100, 100, 255
                                 )  # replace unknown values with a color
        self.qimage = pg.makeQImage(argb, alpha, transpose=False)
Exemplo n.º 14
0
    def export(self, fileName=None, toBytes=False, copy=False):
        if fileName is None and not toBytes and not copy:
            filter = ["*."+str(f) for f in QtGui.QImageWriter.supportedImageFormats()]
            preferred = ['*.bmp', '*.png', '*.tif', '*.jpg']
            for p in preferred[::-1]:
                if p in filter:
                    filter.remove(p)
                    filter.insert(0, p)
            self.fileSaveDialog(filter=filter)
            return

        targetRect = QtCore.QRect(0, 0, self.params['width'], self.params['height'])
        sourceRect = self.getSourceRect()

        bg = np.empty((self.params['width'], self.params['height'], 4), dtype=np.ubyte)
        color = self.params['background']
        bg[:,:,0] = color.blue()
        bg[:,:,1] = color.green()
        bg[:,:,2] = color.red()
        bg[:,:,3] = color.alpha()
        self.png = pg.makeQImage(bg, alpha=True)

        origTargetRect = self.getTargetRect()
        resolutionScale = targetRect.width() / origTargetRect.width()

        painter = QtGui.QPainter(self.png)
        try:
            self.setExportMode(True, {'antialias': self.params['antialias'], 'background': self.params['background'], 'painter': painter, 'resolutionScale': resolutionScale})
            painter.setRenderHint(QtGui.QPainter.Antialiasing, self.params['antialias'])
            self.getScene().render(painter, QtCore.QRectF(targetRect), QtCore.QRectF(sourceRect))
        finally:
            self.setExportMode(False)
        painter.end()

        if copy:
            QtGui.QApplication.clipboard().setImage(self.png)
        elif toBytes:
            return self.png
        else:
            self.png.save(fileName)
Exemplo n.º 15
0
    def update(self):
        global item
        global item_num
        num = item / 2
        azimuth_value = abs(num % 120 + math.pow(-1, int((num / 120))) * 120) % 120
        self.w.opts['azimuth'] = azimuth_value
        print(item, '  ')
        _, frame = self.cap.read()
        if item % 2 != 1:
            frame, W, H = resize_img(frame)
            joint2D = interface2D(frame, model2D)
            img2D = draw_2Dimg(frame, joint2D, 1)
            if item == 0:
                for _ in range(30):
                    self.kpt2Ds.append(joint2D)
            elif item < 30:
                self.kpt2Ds.append(joint2D)
                self.kpt2Ds.pop(0)
            else:
                self.kpt2Ds.append(joint2D)
                self.kpt2Ds.pop(0)

            item += 1
            joint3D = interface3D(model3D, np.array(self.kpt2Ds), W, H)
            pos = joint3D[-1]  # (17, 3)

            for j, j_parent in enumerate(common.skeleton_parents):
                if j_parent == -1:
                    continue
                x = np.array([pos[j, 0], pos[j_parent, 0]]) * 10
                y = np.array([pos[j, 1], pos[j_parent, 1]]) * 10
                z = np.array([pos[j, 2], pos[j_parent, 2]]) * 10 - 10
                pos_total = np.vstack([x, y, z]).transpose()
                self.set_plotdata(
                    name=j, points=pos_total,
                    color=pg.glColor((j, 10)),
                    width=6)

            # save
            if item_num < 10:
                name = '000' + str(item_num)

            elif item_num < 100:
                name = '00' + str(item_num)

            elif item_num < 1000:
                name = '0' + str(item_num)

            else:
                name = str(item_num)
            im3Dname = 'VideoSave/' + '3D_' + name + '.png'
            d = self.w.renderToArray((img2D.shape[1], img2D.shape[0]))  # (W, H)
            print('Save 3D image: ', im3Dname)
            pg.makeQImage(d).save(im3Dname)

            im2Dname = 'VideoSave/' + '2D_' + name + '.png'
            print('Save 2D image: ', im2Dname)
            cv2.imwrite(im2Dname, img2D)

            item_num += 1
        else:
            item += 1
Exemplo n.º 16
0
 def preRender(self, image):
     imageRGBA = makeRGBAImage(image,self.cppLut)
     imageNew = imageRGBA
     argb, alpha =  pg.makeARGB(imageNew.transpose((1, 0, 2)[:imageNew.ndim]), lut=None, levels=None)
     self.qimage = pg.makeQImage(argb, alpha, transpose=False)
Exemplo n.º 17
0
 def save(self, filename, size=(800, 450)):
     pyqtgraph.makeQImage(self.view.renderToArray(size)).save(filename)
     self.app.quit()