gpt4 book ai didi

python - PyQt5在numpy数组中设置RGBA像素

转载 作者:行者123 更新时间:2023-12-01 01:35:22 25 4
gpt4 key购买 nike

我正在努力使用 numpy 数组将像素设置为特定的 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_())

最佳答案

你的想法是对的!

您缺少的是 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]

关于python - PyQt5在numpy数组中设置RGBA像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52441372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com