Приложение Pyside6 закрывается после 2 тайм-аутов и синего оттенка на картинке
Я пытаюсь использовать qtimer для получения нового изображения через jsonrpc и отображения его в окне.
Он работает, хотя изображение имеет синий оттенок, и программа завершает работу после получения двух изображений.
Мой код выглядит так:
import sys
from PySide6.QtCore import QTimer
from PySide6.QtGui import QPixmap, QImage
from PySide6.QtWidgets import QMainWindow, QApplication, QLabel
import requests
import numpy as np
from PIL import Image
import time
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.n = 1
self.title = "Image Viewer"
self.setWindowTitle(self.title)
self.label = QLabel(self)
self.url = 'http://192.168.2.226:4000/jsonrpc'
self.payload = {"jsonrpc":"2.0","method":"get_frame", "params": [5],"id":1 }
self.timer = QTimer()
self.timer.setInterval(1000)
self.timer.timeout.connect(self.update_frame)
self.timer.start()
print('initialization')
def update_frame(self):
print(f'Function ran {self.n} times')
self.n= self.n+1
data = requests.get(url= self.url, json=self.payload).json()
data = np.array(data['result']).reshape(480,640,3).astype(np.int32)
data = QImage(data.tobytes(), data.shape[0],data.shape[1],QImage.Format_RGB32)
data = QPixmap(data)
self.label.setPixmap(data)
self.setCentralWidget(self.label)
self.resize(data.width(), data.height())
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
Результатом этого является:
initialization
Function ran 1 times
Function ran 2 times
Я ожидал, что он продолжит работать, хотя он постоянно существует после двух итераций (я пытался изменить время) без сообщения об ошибке.
Еще одна вещь, с которой я борюсь, - это приложение QT отображает изображение с синим оттенком, в то время как сохранение данных с помощью PIL дает мне ожидаемое изображение, а запуск изображения через opencvs bgr2rgb ничего не меняет.