• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 【ITK學習筆記】1.環境搭建

    安裝 VS2015 和 QT-5.7.1

    安裝 VTK

    • 文件目錄如下,VTK-src放置源代碼,VTK-bin放置CMake編譯后的文件,VTK放置最終的文件,對應的下載網址 VTK
      這里寫圖片描述
      這里寫圖片描述
    • CMake 編譯
      這里寫圖片描述
    • Configure 一次
      這里寫圖片描述
      BUILD_EXAMPLES:指明是否編譯VTK中的例子。未**可以減少編譯時間,之后也可以再進行單獨編譯。此處我們置為OFF。
      BUILD_TESTING——指明是否編譯VTK中的測試代碼。未**可以減少編譯時間,之后也可以再進行單獨編譯。此處我們置為OFF。
      BUILD_SHARED_LIBS——指明是否創建共享庫。如果**,那么DLL或共享庫將會被創建,這樣之后生成的VTK應用程序將會比較小,可以節省不少空間;如果未**,那么靜態庫將被創建.此處我們置為ON。
      這里寫圖片描述
      CMAKE_INSTALL_PREFIX——VTK的生成路徑,修改如下
      這里寫圖片描述
      接下來的設置是有關QT的,搜索qt并勾選全部
      這里寫圖片描述
      再次Configure后VTK_QT_VERSION 改為5
      這里寫圖片描述
      再次Configure,后QT的位置會自動檢測出來(改變QT環境變量后需要關機一下)
      這里寫圖片描述
      這里Qt5WebKitWidgets_DIR找不到,我們去掉 Moudule_vtkGUISupportQtWebkit
      這里寫圖片描述
      Configure后沒紅點擊Generate,然后點擊 Open Project,還可以找到VTK.sln打開
      這里寫圖片描述
    • VS2015編譯 :ALL_BUILD-生成.沒有問題后然后INSTALL-僅用于項目-僅生成INSTALL
      這里寫圖片描述
      換成這里寫圖片描述重新編譯
      QVTKWidgetPlugin.dll 復制到Qt 的designer中,對應目錄如下
      這里寫圖片描述
      這里寫圖片描述
      這樣VS2015中打開 Qt designer會多出 QVTKWidget
      這里寫圖片描述
      *VTK測試:采用cmake建立工程,目錄如下
      這里寫圖片描述
      CMakeLists.txt內容
    cmake_minimum_required(VERSION 2.8)
    cmake_policy(SET CMP0020 NEW)
    project(Cylinder)
    find_package(VTK REQUIRED)
    include(${VTK_USE_FILE})
    add_executable(Cylinder Cylinder.cxx)
    if(VTK_LIBRARIES)
      target_link_libraries(Cylinder ${VTK_LIBRARIES})
    else()
      target_link_libraries(Cylinder vtkHybrid vtkWigets)
    endif(VTK_LIBRARIES)

    這里寫圖片描述
    這里需要輸入VTK_DIR(如果系統環境變量配置了D:\Kitware\VTK\VTK\debug\bin,這里會自動搜索出),他是包含UseVTK.cmake的文件夾
    這里寫圖片描述
    這里寫圖片描述

    然后Configure沒紅后Generate沒問題后 Open Project

    打開VS2015在Cylinder.cxx中輸入下面代碼

    #include "vtkCylinderSource.h"
    #include "vtkPolyDataMapper.h"
    #include "vtkActor.h"
    #include "vtkRenderer.h"
    #include "vtkRenderWindow.h"
    #include "vtkRenderWindowInteractor.h"
    #include "vtkCamera.h"
    #include "vtkProperty.h"
    #include "vtkSmartPointer.h"
    
    int main() {
        vtkSmartPointer<vtkCylinderSource> cylinder = vtkSmartPointer<vtkCylinderSource>::New();
        cylinder->SetResolution(8);
    
        vtkSmartPointer<vtkPolyDataMapper> cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
        cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
    
        vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor>::New();
        cylinderActor->SetMapper(cylinderMapper);
        cylinderActor->GetProperty()->SetColor(1.0000, 0.3882, 0.2784);
        cylinderActor->RotateX(30.0);
        cylinderActor->RotateY(-45.0);
    
        vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
        renderer->AddActor(cylinderActor);
        renderer->SetBackground(0, 0, 1);//RGB
        renderer->ResetCamera();
        renderer->GetActiveCamera()->Zoom(0.3);
    
        vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
        renderWindow->AddRenderer(renderer);
        renderWindow->SetSize(200, 200);
    
        vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
        renderWindowInteractor->SetRenderWindow(renderWindow);
        renderWindowInteractor->Start();
    
        return 0;
    }

    ALL-BUILD-生成打開Cylinder.exe
    這里寫圖片描述
    這里寫圖片描述

    安裝ITK

    ITK 下載ITK_src,這里下的InsightToolkit-4.11.0版本,這里是 ITK examples,安裝和上面一致,注意的是要勾上Moudule_ITKVtkGlue

    • ITK測試
      這里寫圖片描述

    CMakeLists.cxx

    cmake_minimum_required(VERSION 2.8)
    cmake_policy(VERSION 2.8)
    project(HelloWorld)
    
    find_package(ITK REQUIRED)
    include(${ITK_USE_FILE})
    add_executable(HelloWorld HelloWorld.cxx)
    target_link_libraries(HelloWorld ${ITK_LIBRARIES})

    HelloWorld.cxx

    #include"itkImage.h"
    #include<iostream>
    
    int main(){
        typedef itk::Image<unsigned short,3> ImageType;
        ImageType::Pointer image=ImageType::New();
        std::cout<<"hello world"<<std::endl;
        system("pause");
        return 0;
    }

    結果
    這里寫圖片描述

    VTK,ITK混合測試

    我們使用ITK讀取圖片然后VTK展示

    CMakeLists.txt

    cmake_minimum_required(VERSION 2.8)
    cmake_policy(SET CMP0020 NEW)
    project(ImageToVTKImageFilter)
    
    find_package(ITK REQUIRED)
    include(${ITK_USE_FILE})
    if (ITKVtkGlue_LOADED)
      find_package(VTK REQUIRED)
      include(${VTK_USE_FILE})
    else()
      find_package(ItkVtkGlue REQUIRED)
      include(${ItkVtkGlue_USE_FILE})
      set(Glue ItkVtkGlue)
    endif()
    
    add_executable(ImageToVTKImageFilter  ImageToVTKImageFilter.cxx)
    target_link_libraries(ImageToVTKImageFilter
      ${Glue}  ${VTK_LIBRARIES} ${ITK_LIBRARIES})

    ImageToVTKImageFilter.cxx

    #include "itkImage.h"
    #include "itkImageFileReader.h"
    #include "itkGDCMImageIO.h"
    #include "itkImageToVTKImageFilter.h"
    #include "vtkSmartPointer.h"
    #include "vtkImageFlip.h"
    #include "vtkImageViewer.h"
    #include "vtkRenderWindowInteractor.h"
    
    int main()
    {
        typedef signed short PixelType;
        const unsigned int Dimension = 2;
        typedef itk::Image<PixelType, Dimension> ImageType;
    
        typedef itk::GDCMImageIO ImageIOType;
        ImageIOType::Pointer imageIO = ImageIOType::New();
    
        typedef itk::ImageFileReader<ImageType> ReaderType;
        ReaderType::Pointer reader = ReaderType::New();
        reader->SetFileName("E:/22");
        reader->SetImageIO(imageIO);
        reader->Update();
    
        typedef itk::ImageToVTKImageFilter<ImageType> ImageToVTKImageFilterType;
        ImageToVTKImageFilterType::Pointer itkToVtk = ImageToVTKImageFilterType::New();
        itkToVtk->SetInput(reader->GetOutput());
        itkToVtk->Update();
    
        vtkSmartPointer<vtkImageFlip> imageFlip = vtkSmartPointer<vtkImageFlip>::New();
        imageFlip->SetInputData(itkToVtk->GetOutput());
        imageFlip->SetFilteredAxes(1);
        imageFlip->Update();
    
        vtkSmartPointer<vtkRenderWindowInteractor> interactor =
            vtkSmartPointer<vtkRenderWindowInteractor>::New();
    
        vtkSmartPointer<vtkImageViewer> imageViewer = vtkSmartPointer<vtkImageViewer>::New();
        imageViewer->SetInputData(imageFlip->GetOutput());
        imageViewer->SetColorLevel(300);
        imageViewer->SetColorWindow(2000);
        imageViewer->SetupInteractor(interactor);
        imageViewer->Render();
    
        system("pause");
    
        return 0;
    }

    這里寫圖片描述

    版權聲明:本文為YQ5089640原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/YQ5089640/article/details/78367954

    智能推薦

    1. nginx調試環境搭建

    1. 軟件工具 nginx openssl 加密解密庫 pcre 正則庫 zlib 壓縮庫 2. 生成makefile文件和obj目錄 指定三個庫的路徑開啟nginx大部分的功能 此時nginx目錄生成了obj目錄,修改obj目錄下的Makefile 返回nginx目錄直接make&make install,(如果沒有root權限加上root權限’sudo make&rsquo...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    猜你喜歡

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    styled-components —— React 中的 CSS 最佳實踐

    https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...

    基于TCP/IP的網絡聊天室用Java來實現

    基于TCP/IP的網絡聊天室實現 開發工具:eclipse 開發環境:jdk1.8 發送端 接收端 工具類 運行截圖...

    精品国产乱码久久久久久蜜桃不卡