q3dviewer 1.1.1__py3-none-any.whl → 1.1.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -107,7 +107,7 @@ class CMMViewer(q3d.Viewer):
107
107
  label_codec = QLabel("Codec:")
108
108
  codec_layout.addWidget(label_codec)
109
109
  self.codec_combo = QComboBox()
110
- self.codec_combo.addItems(["mjpeg", "mpeg4", "libx264", "libx265"])
110
+ self.codec_combo.addItems(["libx264", "mjpeg", "mpeg4", "libx265"])
111
111
  codec_layout.addWidget(self.codec_combo)
112
112
  setting_layout.addLayout(codec_layout)
113
113
 
@@ -143,6 +143,8 @@ class CMMViewer(q3d.Viewer):
143
143
  dock_widget = QDockWidget("Settings", self)
144
144
  dock_widget.setWidget(QWidget())
145
145
  dock_widget.widget().setLayout(setting_layout)
146
+ # Hide close and undock buttons, I don't want the user to close the dock
147
+ dock_widget.setFeatures(QDockWidget.DockWidgetMovable)
146
148
  self.addDockWidget(QtCore.Qt.RightDockWidgetArea, dock_widget)
147
149
 
148
150
  # Add the dock widget to the main layout
@@ -308,14 +310,16 @@ class CMMViewer(q3d.Viewer):
308
310
 
309
311
  def start_recording(self):
310
312
  self.is_recording = True
311
- self.frames_to_record = []
313
+ self.prv_frame_shape = None
312
314
  video_path = self.video_path_edit.text()
313
315
  codec = self.codec_combo.currentText()
314
316
  self.play_button.setStyleSheet("background-color: red")
315
317
  self.play_button.setText("Recording")
316
318
  self.writer = imageio.get_writer(video_path,
317
319
  fps=self.update_interval,
318
- codec=codec) # quality=10
320
+ codec=codec,
321
+ quality=10,
322
+ pixelformat='yuvj420p')
319
323
  # disable the all the frame_item while recording
320
324
  for frame in self.key_frames:
321
325
  frame.item.hide()
@@ -323,6 +327,7 @@ class CMMViewer(q3d.Viewer):
323
327
 
324
328
  def stop_recording(self, save_movie=True):
325
329
  self.is_recording = False
330
+ self.prv_frame_shape = None
326
331
  self.record_checkbox.setChecked(False)
327
332
  # enable the all the frame_item after recording
328
333
  for frame in self.key_frames:
@@ -342,17 +347,27 @@ class CMMViewer(q3d.Viewer):
342
347
 
343
348
  def record_frame(self):
344
349
  frame = self.glwidget.capture_frame()
345
- # make sure the frame size is multiple of 16
350
+
351
+ # restart recording if the window size changes
352
+ if self.prv_frame_shape is not None and frame.shape != self.prv_frame_shape:
353
+ self.writer.close()
354
+ self.start_recording()
355
+ return
356
+ self.prv_frame_shape = frame.shape
357
+
346
358
  height, width, _ = frame.shape
347
- if height % 16 != 0 or width % 16 != 0:
348
- frame = frame[:-(height % 16), :-(width % 16), :]
349
- frame = np.ascontiguousarray(frame)
350
- self.frames_to_record.append(frame)
359
+ # Adjust frame dimensions to be multiples of 16
360
+ new_height = height - (height % 16)
361
+ new_width = width - (width % 16)
362
+ frame = frame[:new_height, :new_width, :]
363
+ frame = np.ascontiguousarray(frame)
351
364
  try:
352
365
  self.writer.append_data(frame)
353
366
  except Exception as e:
354
- print("Don't change the window size during recording.")
355
- self.stop_recording(False) # Stop recording without saving
367
+ # unexpected error, stop recording without saving
368
+ print("Error while recording:")
369
+ print(e)
370
+ self.stop_recording(False)
356
371
  self.stop_playback()
357
372
 
358
373
  def eventFilter(self, obj, event):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: q3dviewer
3
- Version: 1.1.1
3
+ Version: 1.1.2
4
4
  Summary: A library designed for quickly deploying a 3D viewer.
5
5
  Home-page: https://github.com/scomup/q3dviewer
6
6
  Author: Liu Yang
@@ -28,7 +28,7 @@ q3dviewer/shaders/sort_by_key.glsl,sha256=CA2zOcbyDGYAJSJEUvgjUqNshg9NAehf8ipL3J
28
28
  q3dviewer/tools/__init__.py,sha256=01wG7BGM6VX0QyFBKsqPmyf2e-vrmV_N3-mo-VQ1VBg,20
29
29
  q3dviewer/tools/cloud_viewer.py,sha256=10f2LSWpmsXzxrGobXw188doVjJbgBfPoqZPUi35EtI,3867
30
30
  q3dviewer/tools/example_viewer.py,sha256=yeVXT0k4-h1vTLKnGzWADZD3our6XUaYUTy0p5daTkE,959
31
- q3dviewer/tools/film_maker.py,sha256=PkkMW6__ml7850U2UV2G1Pn4Ahk4EWa7edcvI_5-Z4Y,16028
31
+ q3dviewer/tools/film_maker.py,sha256=KXl0H03vnS7eAFw7nSRvTG3J0Y7gYt6YFUYaoxJf3xM,16600
32
32
  q3dviewer/tools/gaussian_viewer.py,sha256=vIwWmiFhjNmknrEkBLzt2yiegeH7LP3OeNjnGM6GzaI,1633
33
33
  q3dviewer/tools/lidar_calib.py,sha256=M01bGg2mT8LwVcYybolr4UW_UUaR-f-BFciEHtjeK-w,10488
34
34
  q3dviewer/tools/lidar_cam_calib.py,sha256=SYNLDvi15MX7Q3aGn771fvu1cES9xeXgP0_WmDq33w4,11200
@@ -39,9 +39,9 @@ q3dviewer/utils/convert_ros_msg.py,sha256=sAoQfy3qLQKsIArBAVm8H--wlQXOcmkKK3-Ox9
39
39
  q3dviewer/utils/gl_helper.py,sha256=dRY_kUqyPMr7NTcupUr6_VTvgnj53iE2C0Lk0-oFYsI,1435
40
40
  q3dviewer/utils/maths.py,sha256=5TmjWUX1K3UjygXxrUsydjbo7tPzu0gD-yy7qtQUGBU,10588
41
41
  q3dviewer/utils/range_slider.py,sha256=jZJQL-uQgnpgLvtYSWpKTrJlLkt3aqNpaRQAePEpNd0,3174
42
- q3dviewer-1.1.1.dist-info/LICENSE,sha256=81cMOyNfw8KLb1JnPYngGHJ5W83gSbZEBU9MEP3tl-E,1124
43
- q3dviewer-1.1.1.dist-info/METADATA,sha256=wSqlVSSanm719PxnxIE7VOStyogcvsVwK1QobHCOLQI,7032
44
- q3dviewer-1.1.1.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
45
- q3dviewer-1.1.1.dist-info/entry_points.txt,sha256=EOjker7XYaBk70ffvNB_knPcfA33Bnlg21ZjEeM1EyI,362
46
- q3dviewer-1.1.1.dist-info/top_level.txt,sha256=HFFDCbGu28txcGe2HPc46A7EPaguBa_b5oH7bufmxHM,10
47
- q3dviewer-1.1.1.dist-info/RECORD,,
42
+ q3dviewer-1.1.2.dist-info/LICENSE,sha256=81cMOyNfw8KLb1JnPYngGHJ5W83gSbZEBU9MEP3tl-E,1124
43
+ q3dviewer-1.1.2.dist-info/METADATA,sha256=c8ONBUQAOF1v0UYF_6_w_vZ25fagwH-bL-k0Mj6x71I,7032
44
+ q3dviewer-1.1.2.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
45
+ q3dviewer-1.1.2.dist-info/entry_points.txt,sha256=EOjker7XYaBk70ffvNB_knPcfA33Bnlg21ZjEeM1EyI,362
46
+ q3dviewer-1.1.2.dist-info/top_level.txt,sha256=HFFDCbGu28txcGe2HPc46A7EPaguBa_b5oH7bufmxHM,10
47
+ q3dviewer-1.1.2.dist-info/RECORD,,