C/C++

ITK 影像處理 C++ 程式 Hello World 編譯教學與範例

介紹如何在 Ubuntu Linux 中建立 ITK 應用程式開發環境,撰寫 ITK 的 hello world 程式。

開發環境

若要開發基本的 ITK C++ 應用程式,除了安裝 ITK 函式庫之外,還要安裝好 CMake 編譯工具。在 Ubuntu Linux 中,可以使用 apt 安裝:

# 安裝 CMake 與 ITK 函式庫
sudo apt install cmake libinsighttoolkit4-dev

Hello World

以下是一個 ITK 的 hello world 程式碼,將其儲存為 hello.cpp

#include <itkImage.h>
#include <iostream>
int main() {
  // 定義影像類型
  using ImageType = itk::Image<unsigned char, 3>;

  // 建立影像指標
  ImageType::Pointer image = ImageType::New();

  // 影像起始位置
  ImageType::IndexType start;
  start[0] = 0; // X 軸的第一個索引值
  start[1] = 0; // Y 軸的第一個索引值
  start[2] = 0; // Z 軸的第一個索引值

  // 影像尺寸
  ImageType::SizeType size;
  size[0] = 200; // 影像 X 軸長度
  size[1] = 200; // 影像 Y 軸長度
  size[2] = 200; // 影像 Z 軸長度

  // 建立 Region
  ImageType::RegionType region;
  region.SetSize(size);
  region.SetIndex(start);

  // 設定影像 Region
  image->SetRegions(region);

  // 配置記憶體空間
  image->Allocate();

  // 輸出影像資訊
  std::cout << image << std::endl;

  return EXIT_SUCCESS;
}

CMakeLists.txt 設定檔

ITK 的應用程式通常都是搭配 CMake 來編譯,編譯之前要先建立一個 CMakeLists.txt 設定檔,基本的內容如下:

cmake_minimum_required(VERSION 3.10.2)

# 設定專案名稱
project(Hello)

# 尋找並引入 ITK 函式庫
find_package(ITK REQUIRED)
include(${ITK_USE_FILE})

# 增加一個執行檔
add_executable(Hello hello.cpp)

# 定義執行檔連結方式
target_link_libraries(Hello ${ITK_LIBRARIES})

編譯 ITK 應用程式

建立一個編譯用的 build 目錄,進入目錄之後,就按照一般的方式來編譯這個 CMake 專案:

# 建立編譯用目錄
mkdir build

# 進入目錄,編譯專案
cd build
cmake ..
make

編譯完成之後,執行編譯好的程式:

# 執行程式
./Hello
Image (0x558527d6d6f0)
  RTTI typeinfo:   itk::Image<unsigned char, 3u>
  Reference Count: 2
  Modified Time: 4
  Debug: Off
  Object Name:
  Observers:
    none
  Source: (none)
  Source output name: (none)
  Release Data: Off
  Data Released: False
  Global Release Data: Off
  PipelineMTime: 0
  UpdateMTime: 0
  RealTimeStamp: 0 seconds
  LargestPossibleRegion:
    Dimension: 3
    Index: [0, 0, 0]
    Size: [200, 200, 200]
  BufferedRegion:
    Dimension: 3
    Index: [0, 0, 0]
    Size: [200, 200, 200]
  RequestedRegion:
    Dimension: 3
    Index: [0, 0, 0]
    Size: [200, 200, 200]
  Spacing: [1, 1, 1]
  Origin: [0, 0, 0]
  Direction:
1 0 0
0 1 0
0 0 1

  IndexToPointMatrix:
1 0 0
0 1 0
0 0 1

  PointToIndexMatrix:
1 0 0
0 1 0
0 0 1

  Inverse Direction:
1 0 0
0 1 0
0 0 1

  PixelContainer:
    ImportImageContainer (0x558527d6d9b0)
      RTTI typeinfo:   itk::ImportImageContainer<unsigned long, unsigned char>
      Reference Count: 1
      Modified Time: 5
      Debug: Off
      Object Name:
      Observers:
        none
      Pointer: 0x7f817422d010
      Container manages memory: true
      Size: 8000000
      Capacity: 8000000
Share
Published by
Office Guide
Tags: ITK

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago