zoukankan      html  css  js  c++  java
  • VTK 截图

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

    //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实现图片输出比较简单,有如下两个步骤:

    1.将VTK窗口内容转换为图片数据。

    1. vtkWin32OpenGLRenderWindow window = new vtkWin32OpenGLRenderWindow();
    2. ....
    3. vtkWindowToImageFilter filter = new vtkWindowToImageFilter();
    4. filter.SetInput(window );
    5.          

    2.将图片数据转换输出为指定格式的图片。(下面的代码以PNG格式文件输出为例)

    1. vtkPNGWriter writer = new vtkPNGWriter();
    2. writer.SetFileName(sFileName);
    3. writer.SetInput(filter.GetOutput());
    4. writer.Write();
    5. writer.Update();
     
     
  • 相关阅读:
    operator模块和functools模块
    函数注解
    用户定义的可调用类型、从定位参数到仅限关键字参数
    可调用对象
    nxos启动的初始化和https访问nx-api
    网络安全基础之网络协议与安全威胁
    华为AC中服务集命令解释配置
    转:图解ARP协议(四)代理ARP原理与实践(“善意的欺骗”)
    windows下python3 python2 共存下安装virtualenvwrapper
    关于网络安全学习的网站
  • 原文地址:https://www.cnblogs.com/jackieron/p/7158940.html
Copyright © 2011-2022 走看看