Есть несколько проблем:
- Ваш
dtype
должен быть np.uint8
, когда вы создаете Numpy массив изображений - Ваш
format
должен быть QImage.Format_RGB888
- Ваши пиксели должны быть больше, чем
0
или 1
, чтобы отображаться, полный диапазон равен 0..255
Итак, имея это в виду :
#!/usr/bin/env python3
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt5.QtGui import QPixmap, QImage
import numpy as np
import sys
def main():
app = QApplication(sys.argv)
win = QWidget()
label = QLabel()
img = np.zeros((500, 500, 3), dtype=np.uint8)
# Turn up red channel to full scale
img[...,0] = 255
qImg = QPixmap(QImage(img.data, img.shape[0], img.shape[1], QImage.Format_RGB888))
label.setPixmap(qImg)
vbox = QVBoxLayout()
vbox.addWidget(label)
win.setLayout(vbox)
win.show()
sys.exit(app.exec_())
main()
++ (для преобразования 2D изображения в черно-белое изображение)
img = np.zeros((500, 500), dtype=np.uint8)
img[250:, :] = 255
qImg = QPixmap(QImage(img.data, img.shape[0], img.shape[1], QImage.Format_Grayscale8))
Это создаст окно
Ключевые слова : Python, Qt, QImage, QPixmap, обработка изображений.