Виджет появляется рядом с изображением?

Я пытаюсь поместить виджеты ROI pyqtgraph (информация здесь) поверх .PNG изображение. Когда я импортирую изображение в программу, оно получается повернутым и перевернутым неправильно. Я предполагаю, что это ошибка. Чтобы попытаться это исправить, я повернул изображение, НО когда я это делаю, мой виджет ROI исчезает с изображения. Как это исправить?

Без поворота изображения:

i = Image.open("del.png")  
a = array(i) #converting to numpy array 
img1a = pg.ImageItem(a)
v1a.addItem(img1a)

Как только я добавляю img1a.rotate(90) к приведенному выше коду, виджет ROI исчезает с экрана. Как правильно расположить изображение, чтобы виджет области интереса нормально отображался поверх изображения?

Весь код приведен ниже (отредактировано из этого найденного примера здесь.)

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np
from numpy import array
from PIL import Image

## create GUI
app = QtGui.QApplication([])
w = pg.GraphicsWindow(size=(1000,800), border=True)
w.setWindowTitle('pyqtgraph example: ROI Examples')

text = """text"""
w1 = w.addLayout(row=0, col=0)
label1 = w1.addLabel(text, row=0, col=0)
v1a = w1.addViewBox(row=1, col=0, lockAspect=True)
#img1a = pg.ImageItem(arr)

i = Image.open("del.png")
a = array(i)
img1a = pg.ImageItem(a)
v1a.addItem(img1a)
img1a.rotate(90)
v1a.disableAutoRange('xy')
v1a.autoRange()

rois = []
rois.append(pg.EllipseROI([150, 150], [1, 1], pen=(4,9)))
rois.append(pg.EllipseROI([0, 0], [300, 300], pen=(4,9)))

for roi in rois:
     v1a.addItem(roi)

## Start Qt event loop unless running in interactive mode or using pyside.
if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()

person Jaden    schedule 18.01.2018    source источник


Ответы (1)


Вам не нужно вращать элемент, но вы должны повернуть изображение для него, вы можете использовать numpy.rot90:

i = Image.open("del.png")
a = array(i)
a = np.rot90(a, -1)
img1a = pg.ImageItem(a)
v1a.addItem(img1a)
v1a.disableAutoRange('xy')
v1a.autoRange()
person eyllanesc    schedule 18.01.2018
comment
Работает отлично. Спасибо. - person Jaden; 18.01.2018