56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
import sys
|
|
|
|
from PyQt6 import QtCore
|
|
from PyQt6.QtCore import QByteArray
|
|
from PyQt6.QtGui import QImage, QPixmap
|
|
from PyQt6.QtWidgets import QMainWindow, QApplication
|
|
|
|
from flandre.pyqt.Image import Ui_MainWindow
|
|
from flandre.pyqt.ZMQReceiver import ZMQReceiver
|
|
from flandre.config import C
|
|
from flandre.nodes.Node import Node
|
|
from flandre.utils.Msg import KillMsg, Msg, ImageArgMsg, BMMsg
|
|
|
|
|
|
class Adv(QMainWindow, Ui_MainWindow):
|
|
def __init__(self, p: Node, parent=None):
|
|
super(Adv, self).__init__(parent)
|
|
self.p = p
|
|
self.setupUi(self)
|
|
zmq_receiver = ZMQReceiver(self)
|
|
zmq_receiver.zmq_event.connect(self.on_zmq_event)
|
|
zmq_receiver.start()
|
|
|
|
def on_zmq_event(self, msg: QByteArray):
|
|
msg = Msg.decode_msg(msg.data())
|
|
if isinstance(msg, KillMsg):
|
|
if msg.name == '':
|
|
self.close()
|
|
elif isinstance(msg, BMMsg):
|
|
# cvImg = np.frombuffer(msg.data, dtype=np.uint8).reshape((video_height, video_width, 4))[:, :, :3].copy()
|
|
# height, width, channel = cvImg.shape
|
|
# bytesPerLine = 3 * width
|
|
# qImg = QImage(cvImg.data, width, height, bytesPerLine, QImage.Format.Format_RGB888).rgbSwapped()
|
|
qImg = QImage(msg.data, C.video_width, C.video_height, 4 * C.video_width, QImage.Format.Format_RGB888).rgbSwapped()
|
|
self.label.setPixmap(QPixmap(qImg))
|
|
|
|
@QtCore.pyqtSlot(int)
|
|
def vc(self, v):
|
|
if self.horizontalSlider.sender() is None:
|
|
self.p.send(ImageArgMsg('ui', v))
|
|
|
|
|
|
class ImageQt(Node):
|
|
topics = [BMMsg]
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
def loop(self):
|
|
app = QApplication(sys.argv)
|
|
MainWindow = Adv(self)
|
|
# MainWindow.move(int(px), int(py))
|
|
# MainWindow.resize(int(sx), int(sy))
|
|
MainWindow.show()
|
|
app.exec()
|