У меня есть следующее изображение доказательства:
И следующий рукописный шрифт Пайтона, чтобы мочь отображать ее используя пакет PyQtGraph:
import sys
from PyQt4 import QtGui
from PIL import Image
import numpy as np
import pyqtgraph as pg
app = QtGui.QApplication(sys.argv)
img = Image.open('mickey.tif')
a = np.array(img)
pg.image(a)
sys.exit(app.exec_())
После того, как скроллирует рукописный шрифт, результат - следующий:
Где возможно оценивать, что договоренность NumPy, которая содержит массив изображения, интерпретирована PyQtGraph как системой координат, вложенной относительно использованного обычными программами для управления изображений: браузер SO, механизмы Веб навигации; включенный Matlab, где он интерпретируется массивом NumPy правильной формы.
Решение состоит в отображении договоренности transpuesto, используя pg.image(a.T)
, но одинокое будет полезным, если изображение - единственного канала, так как изображение большего количества каналов (RGB, например) только перемещает канал в функцию pg.image()
, давая как результат:
Какова правильная, или более подходящая форма, получения желанной системы координат? Я искал в документации и не нахожу что-то полезным. Я предполагаю, что использовать transpuesta может осложнять извлечение информации об изображении: как координаты начиная с одной Я СГРЫЗ, стоимость пикселей и Ваших координат.
В создании ImageView
ты можешь перемещать его аргумент transform
что показал, как преобразовывать систему координат. Этот аргумент - типа Transform3D
.
Я не попытался посмотрим функционируй, но код должен бы быть чем-то похожим в ésto:
# rotación de 90 grados alrededor del origen (0,0,0)
tr = pg.Transform3D()
tr.rotate(90, 0, 0, 0)
pg.image(a, transform=tr)
Уже ты скажешь мне, функционирует ли оно.
ИСПРАВЛЕНИЕ: Метод transform
класса ImageView
потребуй, чтобы аргумент был QTransform
. Предыдущий исправленный код был бы.
# rotación de 90 grados alrededor del origen (0,0,0)
tr = pg.QtGui.QTransform()
tr.rotate(90)
pg.image(a, transform=tr)
И тебе не стоит просто крутить изображение перед тем, как превращать ее в один ndarray
? а именно:
a = np.array(img.rotate(90))
pyqtgraph
интерпретировать координаты изображения, как его делает это Qt
и не с его собственной покрученной системой координат.
– OSjerick
06.02.2016, 00:25
TypeError: QGraphicsItem.setTransform(QTransform, bool combine=False): argument 1 has unexpected type 'Transform3D'
. – OSjerick 04.02.2016, 14:57QTransform
вместоTransform3D
:tr = pg.QtGui.QTransform(); tr.rotate(90)
. – ChemaCortes 04.02.2016, 18:39