Я хочу нарисовать круг на изображении с помощью 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
Положение ROI pyqt зависит от масштабирования ⇐ Python
Программы на Python
-
Anonymous
1770033926
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_())
Подробнее здесь: [url]https://stackoverflow.com/questions/79881063/pyqt-roi-position-depends-on-zoom[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия