如何截取VTK中window的场景

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何截取VTK中window的场景相关的知识,希望对你有一定的参考价值。

vtk的vtkRenderWindowInteractor中的Initialize函数初始化了可交互的窗口,但是实际工程中,往往需要把窗口拿出来在别的页面上显示,如存为png图片等等。具体方法可看vtkRenderWindow类介绍。
本文主要介绍如何截取当前窗口的画面。

//renWin:当前活动窗口;
//pdata:截图后返回的数据指针,RGBA,32位,存储格式为RGBARGBA....
//maxlen: 防止pdata开辟的空间不够
bool GetOutput(vtkRenderWindow *renWin,unsigned char* pdata, int maxlen)
{
    int w = renWin->GetSize()[0];
    int h = renWin->GetSize()[1];
    if (maxlen<w*h * 4)
        return false;
    vtkSmartPointer<vtkUnsignedCharArray> pixels = vtkSmartPointer<vtkUnsignedCharArray>::New();
    pixels->SetArray(pdata, w*h * 4, 1);
    renWin->GetRGBACharPixelData(0, 0, h - 1, w - 1, 1, pixels);
    return true;
}

通过上述代码可以截取所需窗口的当前场景,除此方式外,也可以存为png格式只需调用vtk的png类即可。

以上是关于如何截取VTK中window的场景的主要内容,如果未能解决你的问题,请参考以下文章

Qt&Vtk-008-Cone3

在 PyQT5 窗口中嵌入 VTK 对象

如何傻瓜式截取视频某一片段?

走进电影院观看VTK

如何利用ffmpeg将一小段视频截取成图片

Forge Viewer - 如何在场景中访问(或获取渲染/片段代理)克隆的网格?