Python VTK,如何录制视频?

标签 python video ffmpeg vtk

我正在尝试使用 ffmpeg 录制 VTK 3D 动画视频。我找到的例子http://www.itk.org/Wiki/VTK/Examples/Cxx/Video/FFMPEG对我来说有点奇怪,因为它不创建渲染,所以不清楚在这种情况下如何附加 Actor 。所以,我的问题是如何将 vtkRenderer 连接到 vtkFFMPEGWriter?我写了一个简化的例子

import vtk

# draw a plane
plane_source = vtk.vtkPlaneSource()
plane_source.SetCenter(0, 0, 0)
plane_source.SetNormal(0, 0, 1)
plane_mapper = vtk.vtkPolyDataMapper()
plane_mapper.SetInput(plane_source.GetOutput())
plane_actor = vtk.vtkActor()
plane_actor.SetMapper(plane_mapper)

# create render
render = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(render)
renWin.SetSize(800, 600)
renInter = vtk.vtkRenderWindowInteractor()
renInter.SetRenderWindow(renWin)
render.AddActor(plane_actor)
renWin.Render()
renInter.Initialize()

# set callback
def cb(interactor, event):
    global plane_actor
    plane_actor.RotateZ(0.1)
    interactor.GetRenderWindow().Render()

renInter.AddObserver('TimerEvent', cb)
timerId = renInter.CreateRepeatingTimer(100);

# put something here?
writer = vtk.vtkFFMPEGWriter()
# ??? writer.SetInputConnection(...)
writer.SetFileName("test.avi")
writer.Start()

# run
renInter.Start()

最佳答案

这个问题可以通过使用 vtkWindowToImageFilter ( description here ) 轻松解决:

windowToImageFilter = vtk.vtkWindowToImageFilter()
windowToImageFilter.SetInput(renWin)
windowToImageFilter.SetInputBufferTypeToRGBA()
windowToImageFilter.ReadFrontBufferOff()
windowToImageFilter.Update()

writer = vtk.vtkAVIWriter()
writer.SetInputConnection(windowToImageFilter.GetOutputPort())
writer.SetFileName("test.avi")
...

关于Python VTK,如何录制视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30855427/

相关文章:

javascript - 在网站上显示 .mov 作为加载屏幕的最佳方式

nginx - FFmpeg -> JSMpeg Websocket 反复关闭

python - 我在 "TypeError: str() takes at most 1 argument (2 given)"变量处收到此错误 "client_response"

python - numpy.loadtxt "could not convert string to float"

javascript - 带闪光灯的 Html5 视频循环

php - ffmpeg 4.3 多部分修剪问题

c++ - 我怎样才能找出这个 ffmpeg 错误代码的含义?

php - 转换为 mp4 时出现 ffmpeg 错误 打开输出流 #0.0 的编码器时出错

python - 根据神经网络中给定的输出获取可能的输入

python - 将变量放在python列表理解中