分类目录归档:图形图像

VTK基础:VTK中主要 class

vtkAlgorithm & vtkPolyDataAlgorithm

vtkAlgorithm 通过 SetInputConnectionAddInputConnectionGetOutputPort 进行管线的连接。

vtkPolyDataAlgorithm 继承自 vtkAlgorithm ,以多边形数据作为输出。Cylinder 程序中的 vtkCylinderSource 继承自 vtkPolyDataAlgorithm

vtkPolyDataAlgorithm 通过 GetOutput 可以直接获得 vtkPolyData*

VTK 中所有 sources、 filters 均直接或间接继承自 vtkAlgorithm


 vtkAbstractMapper & vtkPolyDataMapper

vtkAbstractMapper 相关子类用于将输入数据转换为几何图元(2D / 3D)。…

VTK基础:VTK可视化流程

计划在 GitHub 开写《VTK简明教程》,地址:https://github.com/csuzhangxc/vtk-simple-tutorial
另,GitBook 地址:https://www.gitbook.com/book/csuzhangxc/vtk-simple-tutorial


VTK 两大重要模块

每个 VTK 程序,均包含两个最重要的模块:

  • 可视化管线(Visualization Pipeline)
  • 渲染引擎(Rendering Engine)

其中,可视化管线用于获取或创建数据、加工处理数据、把数据写入文件或者把数据传递给渲染引擎,渲染引擎负责数据的可视化表达。


Cylinder 程序

说明:本示例程序修改自 VTK-6.1.0/Examples/Rendering/Cxx/Cylinder.cxx

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL)
VTK_MODULE_INIT(vtkInteractionStyle)

#include "vtkCylinderSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkRenderer.h"

Qt5(MinGW)使用CMake编译与使用VTK6

本文使用的各软件版本如下:
Qt:5.4.0;
MinGW:4.9.1;
CMake:3.1.1;
VTK:6.1.0。

下载最新版Qt(MinGW版):http://www.qt.io/download-open-source/
下载最新版CMake:http://www.cmake.org/download/
下载最新版VTK:http://vtk.org/VTK/resources/software.html


编译VTK

安装Qt(安装过程中注意勾选安装MinGW)与CMake,并添加与Qt集成安装的MinGW可执行程序路径(Qt***/Tools/mingw***/bin,即mingw32-make.exe所在路径)到系统环境变量PATH
解压VTK,建议解压后路径不要包含中文与空格。

打开VTK目录下的CMakeLists.txt文件,在约第219行,将set(VTK_USE_WIN32_THREADS 1)修改为set(VTK_USE_PTHREADS 1),该处原始上下文为:

include(FindThreads)
set(VTK_USE_WIN32_THREADS 0)
set(VTK_USE_PTHREADS 0)
set(VTK_HP_PTHREADS 0)
set(VTK_USE_SPROC 0)
if(CMAKE_USE_WIN32_THREADS_INIT)
  set(VTK_USE_WIN32_THREADS 1)
  set(CMAKE_THREAD_LIBS_INIT "")
elseif(CMAKE_USE_PTHREADS_INIT)
  

在MFC中应用OpenCV(无CvvImage类)

MFC程序中显示OpenCV图像主要用到的是BITMAPINFO、BITMAPINFOHEADER结构及StretchDIBits函数。

先贴一下MSDN文档中对这些结构与函数的语法描述:

typedef struct tagBITMAPINFO {
  BITMAPINFOHEADER bmiHeader;
  RGBQUAD          bmiColors[1];
} BITMAPINFO, *PBITMAPINFO;
    
typedef struct tagBITMAPINFOHEADER {
  DWORD biSize;
  LONG  biWidth;
  LONG  biHeight;
  WORD  biPlanes;
  WORD  biBitCount;
  DWORD biCompression;
  DWORD biSizeImage;
  LONG  biXPelsPerMeter;
  LONG  biYPelsPerMeter;
  DWORD biClrUsed;
  DWORD biClrImportant;
} 

Python PIL库调用Windows照片查看器预览图片

在Windows下PIL中调用Image.show并不能调用画图工具显示图像(Python2.7 + PIL1.1.7),修改Image模块中的_show函数(约2121行位置)成功使用Windows照片查看器显示图片。

def _show(image, **options):
    # override me, as necessary
    filename = image._dump(format=image.format)
    import subprocess
    subprocess.Popen('rundll32.exe shimgvw.dll,ImageView_Fullscreen '+filename)
  
    #apply(_showxv, (image,), options)