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.Muxer import Muxer
|
||||||
from flandre.nodes.Robot import Robot
|
from flandre.nodes.Robot import Robot
|
||||||
from flandre.nodes.ImageFFMPEG import ImageFFMPEG
|
from flandre.nodes.ImageFFMPEG import ImageFFMPEG
|
||||||
|
from flandre.nodes.ImageQt import ImageQt
|
||||||
from flandre.utils.Msg import KillMsg
|
from flandre.utils.Msg import KillMsg
|
||||||
from flandre.config import CONFIG_FOLDER
|
from flandre.config import CONFIG_FOLDER
|
||||||
|
|
||||||
@ -29,6 +30,7 @@ class LaunchComponent(Enum):
|
|||||||
Device = Device
|
Device = Device
|
||||||
Beamformer = Beamformer
|
Beamformer = Beamformer
|
||||||
ImageFFMPEG = ImageFFMPEG
|
ImageFFMPEG = ImageFFMPEG
|
||||||
|
ImageQt = ImageQt
|
||||||
|
|
||||||
|
|
||||||
def launch(arg: dict[LaunchComponent, dict]):
|
def launch(arg: dict[LaunchComponent, dict]):
|
||||||
|
|||||||
@ -1,15 +1,14 @@
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
from PyQt6 import QtCore
|
from PyQt6.QtCore import QByteArray, Qt
|
||||||
from PyQt6.QtCore import QByteArray
|
|
||||||
from PyQt6.QtGui import QImage, QPixmap
|
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.config import C
|
||||||
from flandre.nodes.Node import Node
|
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):
|
class Adv(QMainWindow, Ui_MainWindow):
|
||||||
@ -20,6 +19,10 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
zmq_receiver = ZMQReceiver(self)
|
zmq_receiver = ZMQReceiver(self)
|
||||||
zmq_receiver.zmq_event.connect(self.on_zmq_event)
|
zmq_receiver.zmq_event.connect(self.on_zmq_event)
|
||||||
zmq_receiver.start()
|
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):
|
def on_zmq_event(self, msg: QByteArray):
|
||||||
msg = Msg.decode_msg(msg.data())
|
msg = Msg.decode_msg(msg.data())
|
||||||
@ -27,17 +30,15 @@ class Adv(QMainWindow, Ui_MainWindow):
|
|||||||
if msg.name == '':
|
if msg.name == '':
|
||||||
self.close()
|
self.close()
|
||||||
elif isinstance(msg, BMMsg):
|
elif isinstance(msg, BMMsg):
|
||||||
# cvImg = np.frombuffer(msg.data, dtype=np.uint8).reshape((video_height, video_width, 4))[:, :, :3].copy()
|
qImg = QImage(
|
||||||
# height, width, channel = cvImg.shape
|
msg.data,
|
||||||
# bytesPerLine = 3 * width
|
C.video_width,
|
||||||
# qImg = QImage(cvImg.data, width, height, bytesPerLine, QImage.Format.Format_RGB888).rgbSwapped()
|
C.video_height,
|
||||||
qImg = QImage(msg.data, C.video_width, C.video_height, 4 * C.video_width, QImage.Format.Format_RGB888).rgbSwapped()
|
4 * C.video_width,
|
||||||
self.label.setPixmap(QPixmap(qImg))
|
QImage.Format.Format_RGBA8888
|
||||||
|
)
|
||||||
@QtCore.pyqtSlot(int)
|
self.g.setPixmap(QPixmap(qImg))
|
||||||
def vc(self, v):
|
self.graphicsView.fitInView(self.s.sceneRect(), Qt.AspectRatioMode.KeepAspectRatio)
|
||||||
if self.horizontalSlider.sender() is None:
|
|
||||||
self.p.send(ImageArgMsg('ui', v))
|
|
||||||
|
|
||||||
|
|
||||||
class ImageQt(Node):
|
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
|
# Created by: PyQt6 UI code generator 6.8.0
|
||||||
#
|
#
|
||||||
@ -17,12 +17,14 @@ class Ui_MainWindow(object):
|
|||||||
self.centralwidget.setObjectName("centralwidget")
|
self.centralwidget.setObjectName("centralwidget")
|
||||||
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
|
||||||
self.gridLayout.setObjectName("gridLayout")
|
self.gridLayout.setObjectName("gridLayout")
|
||||||
self.label = QtWidgets.QLabel(parent=self.centralwidget)
|
self.graphicsView = QtWidgets.QGraphicsView(parent=self.centralwidget)
|
||||||
self.label.setObjectName("label")
|
self.graphicsView.setDragMode(QtWidgets.QGraphicsView.DragMode.ScrollHandDrag)
|
||||||
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
|
self.graphicsView.setResizeAnchor(QtWidgets.QGraphicsView.ViewportAnchor.AnchorUnderMouse)
|
||||||
|
self.graphicsView.setObjectName("graphicsView")
|
||||||
|
self.gridLayout.addWidget(self.graphicsView, 0, 0, 1, 1)
|
||||||
MainWindow.setCentralWidget(self.centralwidget)
|
MainWindow.setCentralWidget(self.centralwidget)
|
||||||
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
|
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")
|
self.menubar.setObjectName("menubar")
|
||||||
MainWindow.setMenuBar(self.menubar)
|
MainWindow.setMenuBar(self.menubar)
|
||||||
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
|
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
|
||||||
@ -35,4 +37,3 @@ class Ui_MainWindow(object):
|
|||||||
def retranslateUi(self, MainWindow):
|
def retranslateUi(self, MainWindow):
|
||||||
_translate = QtCore.QCoreApplication.translate
|
_translate = QtCore.QCoreApplication.translate
|
||||||
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
|
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
|
||||||
self.label.setText(_translate("MainWindow", "TextLabel"))
|
|
||||||
|
|||||||
@ -16,9 +16,12 @@
|
|||||||
<widget class="QWidget" name="centralwidget">
|
<widget class="QWidget" name="centralwidget">
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QGraphicsView" name="graphicsView">
|
||||||
<property name="text">
|
<property name="dragMode">
|
||||||
<string>TextLabel</string>
|
<enum>QGraphicsView::DragMode::ScrollHandDrag</enum>
|
||||||
|
</property>
|
||||||
|
<property name="resizeAnchor">
|
||||||
|
<enum>QGraphicsView::ViewportAnchor::AnchorUnderMouse</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -30,7 +33,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>800</width>
|
<width>800</width>
|
||||||
<height>22</height>
|
<height>30</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
|||||||
@ -274,7 +274,7 @@ class Ui_MainWindow(object):
|
|||||||
self.c_playback_seq_name.setObjectName("c_playback_seq_name")
|
self.c_playback_seq_name.setObjectName("c_playback_seq_name")
|
||||||
self.c_playback_seq_name.addItem("")
|
self.c_playback_seq_name.addItem("")
|
||||||
self.gridLayout_6.addWidget(self.c_playback_seq_name, 0, 1, 1, 2)
|
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.setOrientation(QtCore.Qt.Orientation.Horizontal)
|
||||||
self.s_sid.setObjectName("s_sid")
|
self.s_sid.setObjectName("s_sid")
|
||||||
self.gridLayout_6.addWidget(self.s_sid, 1, 1, 1, 1)
|
self.gridLayout_6.addWidget(self.s_sid, 1, 1, 1, 1)
|
||||||
|
|||||||
@ -512,7 +512,7 @@ border-radius: 7px;
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QSlider" name="s_sid">
|
<widget class="QJumpSlider" name="s_sid">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Orientation::Horizontal</enum>
|
<enum>Qt::Orientation::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
|
|||||||
@ -22,6 +22,7 @@ def main(data_folder, generate_pyqt, dev):
|
|||||||
return
|
return
|
||||||
if generate_pyqt:
|
if generate_pyqt:
|
||||||
subprocess.run([pyuic6, '-o', flandre.PYQT / 'Main.py', flandre.PYQT / 'Main.ui'])
|
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:
|
if data_folder is not None:
|
||||||
C.data_folder = Path(data_folder)
|
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