Я прочитал байтовый массив размера: высота * ширина * 3 (3 = RGB), который представляет изображение. Это необработанные данные, которые я получаю с USB-камеры.
Я смог отобразить и сохранить их, используя PIL в этой теме . Теперь я пытаюсь отобразить его в окне PyQt5.
Я пытался использовать QLabel.setPixmap()
, но, похоже, не могу создать действительную карту пикселей.
Неудачная попытка чтения массива байтов :
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QByteArray
from PyQt5.QtWidgets import QLabel
self.camLabel = QLabel()
pixmap = QPixmap()
loaded = pixmap.loadFromData(QByteArray(img)) # img is a byte array of size: h*w*3
self.imgLabel.setPixmap(pixmap)
в этом примере loaded
возвращает False
, поэтому я знаю, imgLabel.setPixmap
не будет работать, но я не знаю, как отлаживать дальше, чтобы выяснить, почему загрузка не удалась.
Вторая неудачная попытка использовать библиотеку PIL:
import PIL.Image
import PIL.ImageQt
pImage = PIL.Image.fromarray(RGB) # RGB is a numpy array of the data in img
qtImage = PIL.ImageQt.ImageQt(pImage)
pixmap = QPixmap.fromImage(qtImage)
self.imgLabel.setPixmap(pixmap)
В этом примере происходит сбой приложения, когда я запускаю: self.imgLabel.setPixmap(pixmap)
, поэтому, опять же, я не уверен, как далее отладка.
Любая помощь будет оценена!