Neste artigo, veremos como podemos ajustar automaticamente o tamanho do objeto de visualização da imagem no PyQTGaph. PyQtGraph é uma biblioteca gráfica e de interface do usuário para Python que fornece funcionalidades comumente necessárias para projetos e aplicações científicas. Seus objetivos principais são fornecer gráficos interativos rápidos para a exibição de dados (plotagens, vídeo, etc.). Widget usado para exibição e análise de dados de imagem. Implementa muitos recursos, como a exibição de dados de imagem 2D e 3D. Para dados 3D, um controle deslizante do eixo z é exibido, permitindo ao usuário selecionar qual quadro é exibido. Exibe o histograma dos dados da imagem com uma região móvel que define os níveis de claro / escuro, o gradiente editável fornece uma tabela de pesquisa de cores. A propriedade de ajuste automático irá redimensionar a visualização da imagem de acordo com o conteúdo dela, o novo tamanho será de acordo com o tamanho do conteúdo.
Podemos criar uma visualização de imagem com a ajuda do comando fornecido abaixo 

# criar um objeto de visualização de imagem pyqtgraph
imv = pg.ImageView()

Sintaxe: ImageView (parent = None, name = 'ImageView', view = None, imageItem = None, levelMode = 'mono', * args)

Parâmetros:

  • parent (QWidget): Especifica o widget pai ao qual este ImageView pertencerá. Se nenhum, o ImageView é criado sem pai.
  • name (str): O nome usado para registrar o ViewBox interno e o PlotItem usado para exibir os dados da ROI.
  • view (ViewBox ou PlotItem): Se especificado, será usado como a área de exibição que contém a imagem exibida.
  • imageItem (ImageItem): Se especificado, este objeto será usado para exibir a imagem. Deve ser uma instância de ImageItem ou outro objeto compatível.
  • levelMode: especifica o argumento * levelMode *

Retorna: Objeto da classe ImageView
 

Para fazer isso, usamos o método AdjustSize() com o objeto de visualização de imagem



Sintaxe: imv.adjustSize()
Argumento: Não leva nenhum argumento
Retorno: Retorna Nenhum 
 

Abaixo está a implementação 

from PyQt5.QtWidgets import *
import sys 
import numpy as np 
import pyqtgraph as pg 
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class ImageView(pg.ImageView): 
  
    
    
    def __init__(self, *args, **kwargs): 
        pg.ImageView.__init__(self, *args, **kwargs) 
  
class Window(QMainWindow): 
  
    def __init__(self): 
        super().__init__() 
        self.setWindowTitle("PyQtGraph") 
        self.setGeometry(100, 100, 600, 500) 
        icon = QIcon("skin.png") 
        self.setWindowIcon(icon) 
        self.UiComponents() 
        self.show() 
  
    
    def UiComponents(self): 
        widget = QWidget() 
        label = QLabel("Geeksforgeeks Image View") 
        label.setMinimumWidth(130) 
        label.setWordWrap(True) 
        pg.setConfigOptions(antialias = True) 
        imv = ImageView() 
        img = pg.gaussianFilter(np.random.normal(size=(200, 200)),  
                                (5, 5)) * 20 + 100
        img = img[np.newaxis, :, :] 
        decay = np.exp(-np.linspace(0, 0.3, 100))[:, np.newaxis, np.newaxis] 
        data = np.random.normal(size=(100, 200, 200)) 
        data += img * decay 
        data += 2
        sig = np.zeros(data.shape[0]) 
        sig[30:] += np.exp(-np.linspace(1, 10, 70)) 
        sig[40:] += np.exp(-np.linspace(1, 10, 60)) 
        sig[70:] += np.exp(-np.linspace(1, 10, 30)) 
sig = sig[:, np.newaxis, np.newaxis] * 3
        data[:, 50:60, 30:40] += sig 
      imv.setImage(data, xvals=np.linspace(1., 3., data.shape[0])) 
        colors = [ 
            (0, 0, 0), 
            (4, 5, 61), 
            (84, 42, 55), 
            (15, 87, 60), 
            (208, 17, 141), 
            (255, 255, 255) 
        ] 
        cmap = pg.ColorMap(pos=np.linspace(0.0, 1.0, 6), color = colors) 
        imv.setColorMap(cmap) 
        layout = QGridLayout() 
        label.setFixedWidth(130) 
        widget.setLayout(layout) 
        layout.addWidget(label, 1, 0) 
        layout.addWidget(imv, 0, 1, 3, 1) 
        self.setCentralWidget(widget) 
        imv.adjustSize() 
App = QApplication(sys.argv) 
window = Window() 
sys.exit(App.exec())

Resultado :