PyQt5 устанавливает пиксель RGBA в массиве NumPy - PullRequest
0 голосов
/ 21 сентября 2018

Я изо всех сил пытаюсь установить пиксели к определенному значению RGBA с пустым массивом.Я использую QImage.Format_RGBA8888.

Когда я делаю это с QImage.Format_RGB888, он делает то, что я хочу, но я хотел бы иметь прозрачность.

Я не уверен, чтоя пропускаю?

Спасибо за любой совет:)

import sys
from PyQt5 import QtWidgets as qw
from PyQt5 import QtGui as qg
from PyQt5 import QtCore as qc
import numpy as np


class MainWindow(qw.QMainWindow):
    def __init__(self):
        super(qw.QMainWindow, self).__init__()
        self.height = 500
        self.width = 500
        self.setWindowTitle("V.0.0")
        self.setMinimumSize(self.width, self.height)

        # display
        self.display = qw.QLabel()
        self.setCentralWidget(self.display)
        # self.display.setGeometry(qc.QRect(0, 0, self.width, self.height))

        self.background()

        self.display.setPixmap(qg.QPixmap.fromImage(self.world_img))

        self.show()

    def background(self):
        self.world = np.zeros([self.width, self.height, 4], dtype=np.uint8)
        self.world += 255 # should do all black?
        self.world[20, 30, :] = [135, 23, 53, 1]
        self.world[21, 31, :] = [135, 23, 53, 1]
        self.world[22, 32, :] = [135, 23, 53, 1]
        self.world_img = qg.QImage(self.world, self.width, self.height, qg.QImage.Format_RGBA8888)


# Start app
if __name__ == '__main__':
    app = qw.QApplication(sys.argv)
    Game = MainWindow()
    sys.exit(app.exec_())

1 Ответ

0 голосов
/ 21 сентября 2018

У вас правильная идея!

Единственное, чего вам не хватает, так это того, что значения RGB 255 255 255 белый, а не черный .Кроме того, ось прозрачности «A» идет от 0 до 255, где 0 непрозрачен, а 255 полностью прозрачен.

Примеры:

  • ЕслиЗначения RGBA равны (255,255,255,0), тогда вы увидите черный цвет.Это потому, что прозрачность установлена ​​на 0.
  • Если значения RGBA (255,255,255,255), то вы увидите белый цвет.
  • Если значения RGBA равны (135, 23, 53, 255), то вы увидите темно-красный (ваш пример в коде.)

Небольшая вещь для наглядности,рассмотрите возможность установки тестового патча, а не тестового пикселя, например:

self.world[20:40, 30:50, :] = [135, 23, 53, 128]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...