Положение ROI pyqt зависит от масштабированияPython

Программы на Python
Ответить
Anonymous
 Положение ROI pyqt зависит от масштабирования

Сообщение Anonymous »

Я хочу нарисовать круг на изображении с помощью pyqt.
Однако, когда я это делаю, фактическое положение нарисованной области интереса, похоже, зависит от моего масштабирования. Поэтому я получаю разные смещения для функции mapFromScence при увеличении и уменьшении масштаба.
Как этого избежать?
Вот минимальный пример:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QSlider, QPushButton
from PyQt5.QtCore import Qt
import numpy as np
import sys
import pyqtgraph as pg

class VolumeViewer(QWidget):
def __init__(self):
super().__init__()
self.volume = np.random.random((10,256,256))
self.size = 1

vlayout = QVBoxLayout()
plot = pg.PlotItem()
self.imv = pg.ImageView(view=plot)
self.imv.setImage(self.volume)
self.imv.scene.sigMouseClicked.connect(self.imview_clicked)
vlayout.addWidget(self.imv)
self.setLayout(vlayout)

def imview_clicked(self, event):
if event.button() == Qt.RightButton:
event.ignore()
return
pos = self.imv.getImageItem().mapFromScene(event.pos())
print('pos here: ', pos)
item = self.imv.getImageItem()
pos.setX(pos.x())
pos.setY(pos.y()-self.size/2)
roi = pg.CircleROI(pos, self.size, parent=item, movable=False, removable=False, resizable=False, rotatable=False)
roi.setPen(255, 0, 0)
roi.removeHandle(0)
self.imv.addItem(roi)

def closeEvent(self, event):
super().closeEvent(event)

if __name__ == "__main__":
app = QApplication(sys.argv)

viewer = VolumeViewer()
viewer.show()

sys.exit(app.exec_())


Подробнее здесь: https://stackoverflow.com/questions/798 ... ds-on-zoom
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»