add qt watermark
This commit is contained in:
flandre 2025-04-13 17:24:19 +08:00
parent 380f27df7c
commit b6fa30fb42
3 changed files with 11 additions and 49 deletions

View File

@ -27,6 +27,7 @@ class Adv(QMainWindow, Ui_MainWindow):
self.graphicsView.setScene(self.s)
self.grey = True
self.scale = False
self.watermark = True
def keyPressEvent(self, a0: QKeyEvent):
t = a0.text()
@ -35,6 +36,8 @@ class Adv(QMainWindow, Ui_MainWindow):
self.grey = not self.grey
case 's':
self.scale = not self.scale
case 't':
self.watermark = not self.watermark
def on_key(self, key):
# test for a specific key
@ -64,6 +67,8 @@ class Adv(QMainWindow, Ui_MainWindow):
h = msg.rfmat.m.shape[0]
if self.grey:
d2 = msg.rfmat.grey()
if self.watermark:
d2 = d2.watermark()
qImg = QImage(
d2.__bytes__(),
w, h, w,
@ -71,6 +76,8 @@ class Adv(QMainWindow, Ui_MainWindow):
)
else:
d2 = msg.rfmat.pseudo_color()
if self.watermark:
d2 = d2.watermark()
qImg = QImage(
d2.__bytes__(),
w, h, 3 * w,

View File

@ -318,8 +318,8 @@ class RfMatMsg(HeaderByteMsg):
self.rfmat = rfmat
super().__init__(dict(
frame_meta=rfmat.frame_meta.json_str,
seq_meta=rfmat.seq_meta.json_str,
frame_meta=rfmat.frame_meta.name,
seq_meta=rfmat.seq_meta.name,
data_shape=rfmat.m.shape,
dtype=str(rfmat.m.dtype),
), rfmat.m.tobytes())
@ -332,8 +332,8 @@ class RfMatMsg(HeaderByteMsg):
mat = np.frombuffer(msg.data, dtype=dt).reshape(msg.header['data_shape'])
rfmat = RfMat(
mat,
RfFrameMeta.from_json_str(msg.header['frame_meta']),
RfSequenceMeta.from_json_str(msg.header['seq_meta']),
RfFrameMeta.from_name(msg.header['frame_meta']),
RfSequenceMeta.from_name(msg.header['seq_meta']),
)
return RfMatMsg(rfmat)

View File

@ -86,23 +86,6 @@ class RfMeta:
return c
@property
def json_str(self):
return json.dumps(self.__dict__)
@classmethod
def from_json_str(clz, j: str):
j = json.loads(j)
meta = clz()
for field in dataclasses.fields(clz):
v = j[field.name]
match v:
case None:
pass
case _:
meta.__setattr__(field.name, field.type(v))
return meta
@dataclass
class RfFrameMeta(RfMeta):
@ -147,34 +130,6 @@ class RfSequenceMeta(RfMeta):
def d(self):
return self.shape.__len__()
@property
def json_str(self):
d = dict()
for field in dataclasses.fields(RfSequenceMeta):
v = self.__getattribute__(field.name)
match v:
case self.RfSequenceMode():
d[field.name] = v.name
case _:
d[field.name] = v
return json.dumps(d)
@classmethod
def from_json_str(clz, j: str):
j = json.loads(j)
meta = RfSequenceMeta()
for field in dataclasses.fields(RfSequenceMeta):
v = j[field.name]
match field.name:
case 'mode':
meta.mode = RfSequenceMeta.RfSequenceMode[v]
case _:
if v is None:
meta.__setattr__(field.name, None)
else:
meta.__setattr__(field.name, field.type(v))
return meta
if __name__ == '__main__':
# r = RfSequenceMeta.from_name('asdasd1,S=(64 1501),M=PWI,U=30')