• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

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

分類:C/C++ 標籤:ITK

主要資訊欄

搜尋

近期文章

  • Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤
  • Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例
  • Linux 網路設定 ip 指令用法教學與範例
  • Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例
  • Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例
  • Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例
  • Linux 以 Cryptsetup 與 LUKS 加密磁碟教學與範例
  • Linux 使用 age 簡潔的加密、解密工具使用教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide