【ITK學習筆記】1.環境搭建
安裝 VS2015 和 QT-5.7.1
- 下載并安裝 VS2015 和 qt-opensource-windows-x86-msvc2015-5.7.1.exe
- 配置QT環境變量
- 安裝
QT-VS-TOOLS
并選擇Qt版本C:\Qt\Qt5.7.1\5.7\msvc2015_64
安裝 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;
}
智能推薦
1. nginx調試環境搭建
1. 軟件工具 nginx openssl 加密解密庫 pcre 正則庫 zlib 壓縮庫 2. 生成makefile文件和obj目錄 指定三個庫的路徑開啟nginx大部分的功能 此時nginx目錄生成了obj目錄,修改obj目錄下的Makefile 返回nginx目錄直接make&make install,(如果沒有root權限加上root權限’sudo make&rsquo...
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 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...