add imageQT graphicsview
This commit is contained in:
parent
5dd16e09ae
commit
508f1f619c
@ -16,6 +16,7 @@ from flandre.nodes.MainUI import MainUI
|
||||
from flandre.nodes.Muxer import Muxer
|
||||
from flandre.nodes.Robot import Robot
|
||||
from flandre.nodes.ImageFFMPEG import ImageFFMPEG
|
||||
from flandre.nodes.ImageQt import ImageQt
|
||||
from flandre.utils.Msg import KillMsg
|
||||
from flandre.config import CONFIG_FOLDER
|
||||
|
||||
@ -29,6 +30,7 @@ class LaunchComponent(Enum):
|
||||
Device = Device
|
||||
Beamformer = Beamformer
|
||||
ImageFFMPEG = ImageFFMPEG
|
||||
ImageQt = ImageQt
|
||||
|
||||
|
||||
def launch(arg: dict[LaunchComponent, dict]):
|
||||
|
||||
@ -1,15 +1,14 @@
|
||||
import sys
|
||||
|
||||
from PyQt6 import QtCore
|
||||
from PyQt6.QtCore import QByteArray
|
||||
from PyQt6.QtCore import QByteArray, Qt
|
||||
from PyQt6.QtGui import QImage, QPixmap
|
||||
from PyQt6.QtWidgets import QMainWindow, QApplication
|
||||
from PyQt6.QtWidgets import QMainWindow, QApplication, QGraphicsPixmapItem, QGraphicsScene
|
||||
|
||||
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
|
||||
from flandre.pyqt.Image import Ui_MainWindow
|
||||
from flandre.pyqt.ZMQReceiver import ZMQReceiver
|
||||
from flandre.utils.Msg import KillMsg, Msg, BMMsg
|
||||
|
||||
|
||||
class Adv(QMainWindow, Ui_MainWindow):
|
||||
@ -20,6 +19,10 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
zmq_receiver = ZMQReceiver(self)
|
||||
zmq_receiver.zmq_event.connect(self.on_zmq_event)
|
||||
zmq_receiver.start()
|
||||
self.g = QGraphicsPixmapItem()
|
||||
self.s = QGraphicsScene()
|
||||
self.s.addItem(self.g)
|
||||
self.graphicsView.setScene(self.s)
|
||||
|
||||
def on_zmq_event(self, msg: QByteArray):
|
||||
msg = Msg.decode_msg(msg.data())
|
||||
@ -27,17 +30,15 @@ class Adv(QMainWindow, Ui_MainWindow):
|
||||
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))
|
||||
qImg = QImage(
|
||||
msg.data,
|
||||
C.video_width,
|
||||
C.video_height,
|
||||
4 * C.video_width,
|
||||
QImage.Format.Format_RGBA8888
|
||||
)
|
||||
self.g.setPixmap(QPixmap(qImg))
|
||||
self.graphicsView.fitInView(self.s.sceneRect(), Qt.AspectRatioMode.KeepAspectRatio)
|
||||
|
||||
|
||||
class ImageQt(Node):
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# Form implementation generated from reading ui file 'Image.ui'
|
||||
# Form implementation generated from reading ui file '/home/lambda/source/scarlet/flandre/flandre/pyqt/Image.ui'
|
||||
#
|
||||
# Created by: PyQt6 UI code generator 6.8.0
|
||||
#
|
||||
@ -17,12 +17,14 @@ class Ui_MainWindow(object):
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.label = QtWidgets.QLabel(parent=self.centralwidget)
|
||||
self.label.setObjectName("label")
|
||||
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
|
||||
self.graphicsView = QtWidgets.QGraphicsView(parent=self.centralwidget)
|
||||
self.graphicsView.setDragMode(QtWidgets.QGraphicsView.DragMode.ScrollHandDrag)
|
||||
self.graphicsView.setResizeAnchor(QtWidgets.QGraphicsView.ViewportAnchor.AnchorUnderMouse)
|
||||
self.graphicsView.setObjectName("graphicsView")
|
||||
self.gridLayout.addWidget(self.graphicsView, 0, 0, 1, 1)
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 30))
|
||||
self.menubar.setObjectName("menubar")
|
||||
MainWindow.setMenuBar(self.menubar)
|
||||
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
|
||||
@ -35,4 +37,3 @@ class Ui_MainWindow(object):
|
||||
def retranslateUi(self, MainWindow):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
|
||||
self.label.setText(_translate("MainWindow", "TextLabel"))
|
||||
|
||||
@ -16,9 +16,12 @@
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
<widget class="QGraphicsView" name="graphicsView">
|
||||
<property name="dragMode">
|
||||
<enum>QGraphicsView::DragMode::ScrollHandDrag</enum>
|
||||
</property>
|
||||
<property name="resizeAnchor">
|
||||
<enum>QGraphicsView::ViewportAnchor::AnchorUnderMouse</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -30,7 +33,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>22</height>
|
||||
<height>30</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
|
||||
@ -274,7 +274,7 @@ class Ui_MainWindow(object):
|
||||
self.c_playback_seq_name.setObjectName("c_playback_seq_name")
|
||||
self.c_playback_seq_name.addItem("")
|
||||
self.gridLayout_6.addWidget(self.c_playback_seq_name, 0, 1, 1, 2)
|
||||
self.s_sid = QtWidgets.QSlider(parent=self.g_playback)
|
||||
self.s_sid = QJumpSlider(parent=self.g_playback)
|
||||
self.s_sid.setOrientation(QtCore.Qt.Orientation.Horizontal)
|
||||
self.s_sid.setObjectName("s_sid")
|
||||
self.gridLayout_6.addWidget(self.s_sid, 1, 1, 1, 1)
|
||||
|
||||
@ -512,7 +512,7 @@ border-radius: 7px;
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSlider" name="s_sid">
|
||||
<widget class="QJumpSlider" name="s_sid">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
|
||||
@ -22,6 +22,7 @@ def main(data_folder, generate_pyqt, dev):
|
||||
return
|
||||
if generate_pyqt:
|
||||
subprocess.run([pyuic6, '-o', flandre.PYQT / 'Main.py', flandre.PYQT / 'Main.ui'])
|
||||
subprocess.run([pyuic6, '-o', flandre.PYQT / 'Image.py', flandre.PYQT / 'Image.ui'])
|
||||
if data_folder is not None:
|
||||
C.data_folder = Path(data_folder)
|
||||
|
||||
|
||||
@ -1,9 +0,0 @@
|
||||
[MainUI]
|
||||
[ImageCV]
|
||||
[Muxer]
|
||||
[Loader]
|
||||
[Beamformer]
|
||||
#[ImageFFMPEG]
|
||||
|
||||
#[Robot]
|
||||
#[Device]
|
||||
Loading…
Reference in New Issue
Block a user