You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi, I'm trying to create an animation from napari in headless mode.
I am using a jupyter notebook. The images are correctly displayed in normal Qt mode, and the animation gets generated correctly, but not in headless mode. After setting
%set_env QT_QPA_PLATFORM=offscreen
# here I create my images, a (1279, 1760, 1760) array.
from napari_animation import Animation
animation = Animation(viewer)
viewer.update_console({'animation': animation})
animation.capture_keyframe()
for i in range(0,21):
viewer.dims.current_step = (60*i, 879, 879)
animation.capture_keyframe()
viewer.reset_view()
animation.capture_keyframe()
animation.animate('demo2D.mov', canvas_only=True, fps=60)
when I try to create an animation from my script I get
WARNING: QOpenGLWidget: Failed to create context
WARNING:vispy:QOpenGLWidget: Failed to create context
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[54], line 5
2 animation = Animation(viewer)
3 viewer.update_console({'animation': animation})
----> 5 animation.capture_keyframe()
6 for i in range(0,21):
7 viewer.dims.current_step = (60*i, 879, 879)
File /usr/local/lib/python3.9/site-packages/napari_animation/animation.py:82, in Animation.capture_keyframe(self, steps, ease, insert, position)
79 else:
80 raise ValueError("No selected keyframe to replace !")
---> 82 new_frame = KeyFrame.from_viewer(self.viewer, steps=steps, ease=ease)
83 new_frame.name = f"Key Frame {next(self._keyframe_counter)}"
85 if insert:
File /usr/local/lib/python3.9/site-packages/napari_animation/key_frame.py:55, in KeyFrame.from_viewer(cls, viewer, steps, ease)
47 @classmethod
48 def from_viewer(
49 cls, viewer: napari.viewer.Viewer, steps=15, ease=Easing.LINEAR
50 ):
51 """Create a KeyFrame from a viewer instance."""
52 return cls(
53 viewer_state=ViewerState.from_viewer(viewer),
54 thumbnail=make_thumbnail(
---> 55 viewer.screenshot(canvas_only=True, flash=False)
56 ),
57 steps=steps,
58 ease=ease,
59 )
File /usr/local/lib/python3.9/site-packages/napari/viewer.py:129, in Viewer.screenshot(self, path, size, scale, canvas_only, flash)
93 def screenshot(
94 self,
95 path=None,
(...)
100 flash: bool = True,
101 ):
102 """Take currently displayed screen and convert to an image array.
103
104 Parameters
(...)
127 upper-left corner of the rendered region.
128 """
--> 129 return self.window.screenshot(
130 path=path,
131 size=size,
132 scale=scale,
133 flash=flash,
134 canvas_only=canvas_only,
135 )
File /usr/local/lib/python3.9/site-packages/napari/_qt/qt_main_window.py:1402, in Window.screenshot(self, path, size, scale, flash, canvas_only)
1373 def screenshot(
1374 self, path=None, size=None, scale=None, flash=True, canvas_only=False
1375 ):
1376 """Take currently displayed viewer and convert to an image array.
1377
1378 Parameters
(...)
1400 upper-left corner of the rendered region.
1401 """
-> 1402 img = QImg2array(self._screenshot(size, scale, flash, canvas_only))
1403 if path is not None:
1404 imsave(path, img) # scikit-image imsave method
File /usr/local/lib/python3.9/site-packages/napari/_qt/utils.py:113, in QImg2array(img)
111 arr = np.array(b).reshape(h, w, c)
112 else:
--> 113 b.setsize(h * w * c)
114 arr = np.frombuffer(b, np.uint8).reshape(h, w, c)
116 # Format of QImage is ARGB32_Premultiplied, but color channels are
117 # reversed.
AttributeError: 'NoneType' object has no attribute 'setsize'
The text was updated successfully, but these errors were encountered:
Hi, I'm trying to create an animation from napari in headless mode.
I am using a jupyter notebook. The images are correctly displayed in normal Qt mode, and the animation gets generated correctly, but not in headless mode. After setting
when I try to create an animation from my script I get
The text was updated successfully, but these errors were encountered: