概述

需要调用vtk对体数据进行渲染处理,处理结果直接存为图片而不通过窗口显示。

直接使用vtkRenderWindow加上vtkWindowToImageFilter类写入,在调用渲染的过程中会出现窗口闪烁。

最简单的方式为在调用vtkRenderwindow->Render()时,首先设置渲染窗口为off-screen渲染,调用函数OffScreenRenderingOn(),调用后窗口不会出现。

如果使用桌面系统(windows或Ubuntu desktop等),创建的窗口可以在内存中不显示,此问题可以解决(效率不确定)。但使用Ubuntu server调用时会出现以下错误:
bad x server connection

基于版本:

  • Ubuntu Server 16.04.2 LTS
  • vtk 7.1.1
  • mesa 17.2.2
  • zlib 1.2.11

思路

vtk off-screen渲染需要调用x-server的渲染或mesa的渲染接口,UbuntuServer默认没有安装x-server,因此需要使用mesa中的osmesa(offscreen mesa)渲染。

需要安装mesa的off-screen渲染支持,然后重新编译vtk为直接支持off-screen的版本。(两处编译均有坑)

具体步骤

安装osmesa

  • 安装gcc编译器(Ubuntu Server默认没有安装,Ubuntu desktop默认已经安装)

sudo apt-get install build-essential

  • 安装zlib,安装时存在的依赖。官网下载安装

./configure
make
make install

  • 安装osmesa

官方给出的安装选项为
configure --enable-osmesa --disable-driglx-direct --disable-dri --with-gallium-drivers=swrast

但是--disable-dri选项会出错,实际运行如下
configure --enable-osmesa --disable-driglx-direct --with-gallium-drivers=swrast

此处会出现成吨未知包(Ubuntu Server中,Ubuntu desktop貌似没有少这么多)
懒得一个个找,照着网上的搜了一堆之后还是需要一个个找漏的。

sudo apt-get install x11proto-gl-dev

sudo apt-get install libdrm-dev libxxf86vm-dev libxt-dev xutils-dev flex bison xcb libx11-xcb-dev libxcb-glx0 libxcb-glx0-dev xorg-dev libxcb-dri3-dev libxcb-dri2-0-dev

sudo apt-get install libxcb-xfixes0 libxcb-xfixes0-dev

sudo apt-get install libxcb-present-dev libxcb-sync-dev

sudo apt-get install libxshmfence-dev

出现找不到的包时,可以使用 apt search pkg_name

以上为吐槽,可以一步步执行,偷懒的话可以直接使用完整安装命令:

sudo apt-get install x11proto-gl-dev libdrm-dev libxxf86vm-dev libxt-dev xutils-dev flex bison xcb libx11-xcb-dev libxcb-glx0 libxcb-glx0-dev xorg-dev libxcb-dri3-dev libxcb-dri2-0-dev libxcb-xfixes0 libxcb-xfixes0-dev libxcb-present-dev libxcb-sync-dev libxshmfence-dev

./configure没有问题后,运行 make && make install,编译安装

vtk 代码编译

使用的cmake-gui,需要勾选advanced选项才能看到需要的设置项。

与Google到的选项不怎么一样,不知道是不是版本问题,可以在search框中搜索选项修改。本文主要修改:

  • VTK_USE_OFFSCREEN on
  • VTK_OPENGL_HAS_OSMESA on
  • VTK_USE_X off

之后使用正常方式编译执行代码

同上,vtkRenderWindow在执行render之前调用函数OffScreenRenderingOn()

得到的程序即可在Ubuntu Server下运行

未知问题

需要重启电脑???!! 原因未知,本来在ctrl+alt+f1中运行出错,使用ctrl+alt+f2打开另一个命令行之后程序运行没问题....

转载于:https://www.cnblogs.com/fly2wind/p/7662981.html

在Ubuntu Server上使用vtk处理体数据,直接得到渲染结果图片避免显示窗口相关推荐

  1. Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  2. Docker-Compose简介与Ubuntu Server 上安装Compose

    Compose简介 Compose是Docker官方的开源项目,负责对Docker容器集群的快速编排. Compose是定义和运行多个Docker容器的应用. 举例来说: 一个项目除了Tomcat容器 ...

  3. linux ubuntu安装 mono,在 Ubuntu Server 上安装配置 Mono 生产环境

    在 Ubuntu Server 上安装配置 Mono 生产环境 在 Ubuntu Server 上安装和配置 Apache2 + Mono 生产环境的记录. 服务器环境是 Ubuntu Server ...

  4. ppa java 8_通过 ppa 在ubuntu server 上安装java 8

    第一步:使用ppa/源方式安装,安装ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 第二步:安装 oracle ...

  5. Ubuntu Server上如何安装Gi

    相信大家在学习Ubuntu系统的时候都接触过GI,但是并没有去深究,对于Ubuntu Server上如何安装Gi是不是很多人都还不会呢? 那么小编就为大家介绍Ubuntu Server上安装Gi的方法 ...

  6. Ubuntu Server 上在安装Nginx时执行./confgiure后提示:C compiler cc is not found

    场景 Ubuntu Server 16.04 LTS上怎样安装下载安装Nginx并启动: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detai ...

  7. 三、Ubuntu Server上安装Matlab,利用X11和Putty输出窗口到Windows桌面(补充内容)

    一.安装Google Chrome浏览器 Openbox右键默认菜单中第二个选项是Web browser,但系统截至目前是没有安装任何网页浏览器的.我们可以选择安装Chrome,操作过程如下. # 在 ...

  8. Ubuntu Server上的LVM配置

    在安装Linux的时候,通常遇到的一个比较头痛的问题就是分区,到底每个区该分多少,用了一段时间之后,某个分区又不够用了,该怎么办?如果是普通的服务器,那一切都好说,大不了就关机重新划分分区嘛,但是对于 ...

  9. 在Ubuntu Server上添加NFS共享文件夹

    Synology NAS已搭建好NFS服务 Ubuntu上安装NFS命令支持 sudo apt install nfs-common Ubuntu上先创建要映射的文件夹 sudo mkdir /tes ...

最新文章

  1. 用ElasticSearch存储日志
  2. CF1472(div3):总结
  3. python把浮点数转换成16进制_Python将colorsys RGB坐标转换为十六进制
  4. python—符号 | ^的使用
  5. Tomcat 7 的domain域名配置,Tomcat 修改JSESSIONID
  6. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_10_常用的函数式接口_Consumer接口中的默认方法andThen...
  7. java 抽奖算法_Java实现游戏抽奖算法
  8. RGBA转换成RGB
  9. 0x80004005错误代码解决方法,哪种方法快捷有效?
  10. 国内6大常见免费数据采集器特点分析
  11. 单耳蓝牙耳机怎么连接_蓝牙耳机怎么连接
  12. easypoi 合并单元格 横向 纵向
  13. html上下箭头动态效果,使用CSS和Bootstrap图标制作上下跳动的指示箭头动画效果...
  14. 深扒程序员外包,为啥我不建议你去外包公司?
  15. mesh渲染到ui_Unity中UI曲面化
  16. 智慧消防管理系统实现全民消防造福全社会
  17. 保持冷静、继续前行——《白说》读后感
  18. 谷歌(google)全球网址
  19. 美团外卖API接入(三)
  20. OA软件的技术发展过程及未来趋势

热门文章

  1. 软考高项信息系统项目管理工程师自考500元搞定攻略
  2. js实现文字从右滚动到左边代码循环滚动实例
  3. java swing 注册事件_比较Java Swing中三种注册事件的方法
  4. 博图os更新_博途TIA安装与更新
  5. QtJava笔记-Qt与Java进行SSL双向认证(Qt服务端,Java客户端)
  6. C++工作笔记-仿大佬使用枚举类型
  7. 怎么修改图例位置_学到了学到了,叠加图,原来可以这样处理图例
  8. 乐高无限无法连接到服务器,乐高无限近期热点问题FQ 新手问题解答
  9. 访谈编码怎么做_怎么才能让口才得到提升
  10. 移动互联网APP测试流程及测试点(转载) (二)