Переписать двумерный массив целых чисел в растровое изображение в Python, используя PyQT

1

Я хочу преобразовать массив целых чисел в какое-то "изображение" с помощью PyQt (я решил сделать свое приложение в Qt). У меня такой массив:

Array = [
[0,0,1,0,0],
[0,1,0,1,0],
[1,0,0,0,1],
[0,1,0,1,0],
[0,0,1,0,0]]

Теперь я хочу переписать его на картинку, заменив каждое целое число на квадратные 10x10 пикселей. У меня есть определение для каждого значения в массиве в RGB. Что еще Это какая-то игра жизни, поэтому она должна обновляться на каждом шаге и не должна быть медленной. Может быть, что-то похожее на OpenCV?

Спасибо заранее!

Cheers, Матеуш

Теги:
arrays
qt
pyqt

2 ответа

1

Вероятно, вы должны использовать графические библиотеки QT для производительности. Другим, может быть, более простым способом было бы использовать PIL (Python Imaging Library) или некоторые привязки Python к библиотеке ImageMagick или MagickWand (я не нашел хорошую и текущую) и использовать массивы NumPys для вычислений и манипуляций и использовать поверхности или холста с использованием PyGame, QT или другого инструментария GUI.

В PIL есть PIL.Image.fromarray(np_array, 'RGBA'), который читает подходящие массивы NumPy - тип данных обычно должен быть dtype=int8, а форма (height, width, n_channels).

Для очень простого графического формата, который использует значения байтов ascii, см. NetPBM.

1

Вы можете легко сделать это с помощью QGraphicsScene и QGraphicsView. Чтобы получить хорошую производительность, вы хотите называть setViewport (QGLWidget()) в вашем экземпляре QGraphicsView. Создайте подкласс QGraphicsItem, чтобы представить элемент в вашем массиве. Тогда вы сможете даже анимировать изменения, если хотите.

Если вы хотите анимацию или демонстрируете некоторую прогрессию, например, в Conway Game of Life, вы также можете взглянуть на QTimeLine.

Вы можете найти эквивалентную документацию на основе python- на PyQt * или PySide. И PyQt, и PySide используют почти идентичный API, поэтому для большинства всего, что вы можете использовать их взаимозаменяемо.

* Примечание. Сайт PyQt недоступен на момент написания этой статьи.

  • 0
    Спасибо за ссылки, но мое приложение на Python. Все ли эти классы присутствуют в PyQt?
  • 0
    Как PyQt, так и PySide имеют поддержку классов, упомянутых выше. Я буду редактировать в синтаксис Python.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню