Неправильная система координат, отобразив изображение используя PyQtGraph

У меня есть следующее изображение доказательства:

introducir la descripción de la imagen aquí

И следующий рукописный шрифт Пайтона, чтобы мочь отображать ее используя пакет 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_())

После того, как скроллирует рукописный шрифт, результат - следующий:

introducir la descripción de la imagen aquí

Где возможно оценивать, что договоренность NumPy, которая содержит массив изображения, интерпретирована PyQtGraph как системой координат, вложенной относительно использованного обычными программами для управления изображений: браузер SO, механизмы Веб навигации; включенный Matlab, где он интерпретируется массивом NumPy правильной формы.

Решение состоит в отображении договоренности transpuesto, используя pg.image(a.T), но одинокое будет полезным, если изображение - единственного канала, так как изображение большего количества каналов (RGB, например) только перемещает канал в функцию pg.image(), давая как результат:

introducir la descripción de la imagen aquí

Какова правильная, или более подходящая форма, получения желанной системы координат? Я искал в документации и не нахожу что-то полезным. Я предполагаю, что использовать transpuesta может осложнять извлечение информации об изображении: как координаты начиная с одной Я СГРЫЗ, стоимость пикселей и Ваших координат.

3
задан 02.02.2016, 21:42
2 ответа

В создании 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)
2
ответ дан 24.11.2019, 14:55
  • 1
    Брось эту ошибку: TypeError: QGraphicsItem.setTransform(QTransform, bool combine=False): argument 1 has unexpected type 'Transform3D'. –  OSjerick 04.02.2016, 14:57
  • 2
    То, что он говорит тебе, состоит в том, что ждет один QTransform вместо Transform3D: tr = pg.QtGui.QTransform(); tr.rotate(90). –  ChemaCortes 04.02.2016, 18:39
  • 3
    Функционируй. и #191; Podr и # 237; схвати издавать ответ? –  OSjerick 04.02.2016, 19:32
  • 4
    Уже - в и # 241; adido correcci и # 243; n. –  ChemaCortes 04.02.2016, 19:39

И тебе не стоит просто крутить изображение перед тем, как превращать ее в один ndarray? а именно:

a = np.array(img.rotate(90))
0
ответ дан 24.11.2019, 14:55
  • 1
    Нет. Идея не является одинокой отображать, и он искал soluci и # 243; n тип configuraci и # 243; n, что позволял pyqtgraph интерпретировать координаты изображения, как его делает это Qt и не с его собственной покрученной системой координат. –  OSjerick 06.02.2016, 00:25