VTK 9.2.6源码编译Remote功能 SplineDrivenImageSlicer

文章介绍了在Python项目中因需要使用VTK的SplineDrivenImageSlicer模块而进行VTK源码编译的过程。通过CMake配置,添加VTK_ENABLE_REMOTE_MODULES并创建SplineDrivenImageSlicer.remote.cmake文件,然后在CMakeLists.txt等文件中添加必要代码以确保模块正确编译。在完成编译后,会生成SplineDrivenImageSlicer的DLL库文件,使得该模块可用于C++或Python项目。

一、编译准备

        1、CMAKE 3.1.8

        2、VTK 9.2.6 release版源码

        3、Microsoft Visual Studio 2017 或 2019

二、问题

        因为我的PYTHON项目中要使用VTK的CPR曲面重建模块vtkSplineDrivenImageSlicer,但是PIP安装的VTK没有这个模块,只好通过VTK源码编译。

三、解决办法

        在使用CMake编译VTK 9.2.6时,可以勾选VTK_ENABLE_REMOTE_MODULES,但没有VTK_MODULE_ENABLE_VTK_vtkSplineDrivenImageSlicer,需要在VTK源码REMOTE目录增加SplineDrivenImageSlicer.remote.cmake文件,内容如下:

#
# vtkSplineDrivenImageSlicer
#

vtk_fetch_module( SplineDrivenImageSlicer
  "Spline Driven Image Slicer - http://www.vtkjournal.org/browse/publication/838"
  GIT_REPOSITORY https://github.com/lorensen/midas-journal-838.git
# First working as a remote module
  GIT_TAG 7994999c1e4b56ab546527788b7c894a138e97a1
  )

在CMAKE中点击Configure,CMake会下载 SplineDrivenImageSlicer 代码,编译完成后,发现没有SplineDrivenImageSlicer的DLL文件。

在CMAKE找到VTK_MODULE_ENABLE_VTK_vtkSplineDrivenImageSlicer,Value选择YES。同时在VTK源码REMOTE/SplineDrivenImageSlicer目录下,确认存在以下三个文件(如果没有,可以复制以下内容创建文件):

1、CMakeList.txt文件:

message(STATUS "SplineDrivenImageSlicer: Building as a Remote VTK module")

set(Module_SRCS
  vtkFrenetSerretFrame.cxx
  vtkSplineDrivenImageSlicer.cxx  
)
set(Module_CLASS
  vtkFrenetSerretFrame
  vtkSplineDrivenImageSlicer
)
set(Module_HEADER
  vtkFrenetSerretFrame.h
  vtkSplineDrivenImageSlicer.h
)

if (VTK_VERSION VERSION_LESS "8.90.0")
  vtk_module_library(SplineDrivenImageSlicer ${Module_SRCS})
else()
  vtk_module_add_module(VTK::SplineDrivenImageSlicer
    SOURCES ${Module_SRCS}
    CLASSES ${Module_CLASS}
    HEADERS ${Module_HEADER}
    )
endif()

2、module.cmake文件

set(DOCUMENTATION "A Spline Driven Reslice Algorithm as described in the VTK Journal Article at http://www.vtkjournal.org/browse/publication/838 .")

vtk_module(SplineDrivenImageSlicer
  DESCRIPTION
    "${DOCUMENTATION}"
  DEPENDS
    vtkCommonCore
    vtkFiltersCore
    vtkFiltersSources
    vtkImagingCore
  TEST_DEPENDS
    vtkTestingCore
    vtkImagingSources
  KIT
    vtkRemote
)

3、vtk.module文件

NAME
  VTK::SplineDrivenImageSlicer
LIBRARY_NAME
  SplineDrivenImageSlicer
DEPENDS
  VTK::CommonCore
  VTK::FiltersCore
  VTK::FiltersSources
  VTK::ImagingCore
TEST_DEPENDS
  VTK::TestingCore
  VTK::ImagingSources
DESCRIPTION
  "A Spline Driven Reslice Algorithm as described in the VTK Journal Article at http://www.vtkjournal.org/browse/publication/838 ."

再次编译,就会生成SplineDrivenImageSlicer的DLL库文件,C++或PYTHON版本的REMOTE功能SplineDrivenImageSlicer 就可以愉快地使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值