ITK读取,转VTK,QT显示



/*
 * hello_itk_vtk_qtwidgets.cpp
 * 2017-11-15
 * ITK读取,转VTK,QT显示
 */

#include "hello_itk_vtk_qtwidgets.h"
#include "ui_hello_itk_vtk_qtwidgets.h"


#include "itkImage.h"  
#include "itkImageFileReader.h"   
#include "itkImageToVTKImageFilter.h"  


#include <vtkSmartPointer.h>  
#include <vtkImageViewer2.h> 

#include <vtkImageFlip.h>


//
// Hello_ITK_VTK_QtWidgets 类的构造函数
Hello_ITK_VTK_QtWidgets::Hello_ITK_VTK_QtWidgets(int b)
{
	this->ui = new Ui_Hello_ITK_VTK_QtWidgets;
	this->ui->setupUi(this);


//
	const unsigned int Dimension = 2;                    //定义图像维数  
  
    //typedef unsigned char PixelType ;                  //定义像素类型:灰度图                   
    typedef itk::RGBPixel< unsigned char >   PixelType;  //定义像素类型:RGB图  
  
    typedef itk::Image<PixelType , Dimension> ImageType ;   
  
    typedef itk::ImageFileReader< ImageType >  ReaderType;  

    ReaderType::Pointer reader = ReaderType::New();  

    const char * filename1 = "/home/zlf/Documents/VTK/VTKCODE/ITKReadWrite_VTKShow/娄倬瑜1.jpg";  

    reader->SetFileName( filename1 );  

    reader->Update();  
  

      
    // 已经用ITK读取数据,存储在reader里面  
    // ITK TO VTK   
    typedef itk::ImageToVTKImageFilter< ImageType > itkTovtkFilterType;    
    itkTovtkFilterType::Pointer itkTovtkImageFilter = itkTovtkFilterType::New();    
    itkTovtkImageFilter->SetInput(reader->GetOutput());//设置图像数据从ITK转向VTK    
    itkTovtkImageFilter->Update();    
  

	// 上下反转
	vtkSmartPointer <vtkImageFlip> imageflip =vtkSmartPointer<vtkImageFlip>::New();
	imageflip->SetInputData(itkTovtkImageFilter->GetOutput());
	imageflip->SetFilteredAxes(1);//Y轴  
	imageflip->Update();

	// 显示
    vtkImageViewer2  *viewer =  vtkImageViewer2::New();
    viewer->SetInputData(imageflip->GetOutput());
    viewer->SetRenderWindow(ui->my_widget->GetRenderWindow());
    viewer->Render();


};



//
// Hello_ITK_VTK_QtWidgets 类的析构函数
Hello_ITK_VTK_QtWidgets::~Hello_ITK_VTK_QtWidgets()
{
    delete ui;
}




/



/*
 * hello_itk_vtk_qtwidgets.h
 * 2017-11-15
 * ITK读取,转VTK,QT显示
 */

#ifndef HELLO_ITK_VTK_QTWIDGETS_H
#define HELLO_ITK_VTK_QTWIDGETS_H

#include <QMainWindow>

// Forward Qt class declarations
class Ui_Hello_ITK_VTK_QtWidgets;


class Hello_ITK_VTK_QtWidgets : public QMainWindow
{
    Q_OBJECT

public:
    Hello_ITK_VTK_QtWidgets(int b);
    ~Hello_ITK_VTK_QtWidgets();

private:
  // Designer form
  Ui_Hello_ITK_VTK_QtWidgets *ui;
};

#endif // HELLO_ITK_VTK_QTWIDGETS_H


/


/********************************************************************************
** 此文件是自动生成的  ui_hello_itk_vtk_qtwidgets.h
** Form generated from reading UI file 'hello_itk_vtk_qtwidgets.ui'
**
** Created by: Qt User Interface Compiler version 5.8.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_HELLO_ITK_VTK_QTWIDGETS_H
#define UI_HELLO_ITK_VTK_QTWIDGETS_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QWidget>

// 默认生成的是: #include <qvtkwidget.h>
// 此时会报错: fatal error: qvtkwidget.h: No such file or directory
// 修改成#include <QVTKWidget.h>
#include <QVTKWidget.h>

QT_BEGIN_NAMESPACE

class Ui_Hello_ITK_VTK_QtWidgets
{
public:
    QWidget *centralWidget;
    QHBoxLayout *horizontalLayout;
    QGridLayout *gridLayout;
    QVTKWidget *my_widget;
    QMenuBar *menuBar;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *Hello_ITK_VTK_QtWidgets)
    {
        if (Hello_ITK_VTK_QtWidgets->objectName().isEmpty())
            Hello_ITK_VTK_QtWidgets->setObjectName(QStringLiteral("Hello_ITK_VTK_QtWidgets"));
        Hello_ITK_VTK_QtWidgets->resize(463, 452);
        centralWidget = new QWidget(Hello_ITK_VTK_QtWidgets);
        centralWidget->setObjectName(QStringLiteral("centralWidget"));
        horizontalLayout = new QHBoxLayout(centralWidget);
        horizontalLayout->setSpacing(6);
        horizontalLayout->setContentsMargins(11, 11, 11, 11);
        horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
        gridLayout = new QGridLayout();
        gridLayout->setSpacing(6);
        gridLayout->setObjectName(QStringLiteral("gridLayout"));
        my_widget = new QVTKWidget(centralWidget);
        my_widget->setObjectName(QStringLiteral("my_widget"));
        QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
        sizePolicy.setHorizontalStretch(0);
        sizePolicy.setVerticalStretch(0);
        sizePolicy.setHeightForWidth(my_widget->sizePolicy().hasHeightForWidth());
        my_widget->setSizePolicy(sizePolicy);

        gridLayout->addWidget(my_widget, 0, 0, 1, 1);


        horizontalLayout->addLayout(gridLayout);

        Hello_ITK_VTK_QtWidgets->setCentralWidget(centralWidget);
        menuBar = new QMenuBar(Hello_ITK_VTK_QtWidgets);
        menuBar->setObjectName(QStringLiteral("menuBar"));
        menuBar->setGeometry(QRect(0, 0, 463, 25));
        Hello_ITK_VTK_QtWidgets->setMenuBar(menuBar);
        mainToolBar = new QToolBar(Hello_ITK_VTK_QtWidgets);
        mainToolBar->setObjectName(QStringLiteral("mainToolBar"));
        Hello_ITK_VTK_QtWidgets->addToolBar(Qt::TopToolBarArea, mainToolBar);
        statusBar = new QStatusBar(Hello_ITK_VTK_QtWidgets);
        statusBar->setObjectName(QStringLiteral("statusBar"));
        Hello_ITK_VTK_QtWidgets->setStatusBar(statusBar);

        retranslateUi(Hello_ITK_VTK_QtWidgets);

        QMetaObject::connectSlotsByName(Hello_ITK_VTK_QtWidgets);
    } // setupUi

    void retranslateUi(QMainWindow *Hello_ITK_VTK_QtWidgets)
    {
        Hello_ITK_VTK_QtWidgets->setWindowTitle(QApplication::translate("Hello_ITK_VTK_QtWidgets", "Hello_ITK_VTK_QtWidgets", Q_NULLPTR));
    } // retranslateUi

};

namespace Ui {
    class Hello_ITK_VTK_QtWidgets: public Ui_Hello_ITK_VTK_QtWidgets {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_HELLO_ITK_VTK_QTWIDGETS_H


/


<?xml version="1.0" encoding="UTF-8"?>
<!-- ================================================================ -->
<!-- hello_itk_vtk_qtwidgets.ui -->
<!-- 第一行内容必须在第一行 否则报错:
	Error in line 4, column 38 : XML declaration not at start of document.-->
<!-- ================================================================ -->
<ui version="4.0">
 <class>Hello_ITK_VTK_QtWidgets</class>
 <widget class="QMainWindow" name="Hello_ITK_VTK_QtWidgets">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>463</width>
    <height>452</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Hello_ITK_VTK_QtWidgets</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <layout class="QHBoxLayout" name="horizontalLayout">
    <item>
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0">

<!-- ================================================================ -->
<!-- <widget class="QWidget" name="my_widget" native="true"> -->
       <widget class="QVTKWidget" name="my_widget" native="true">
<!-- ================================================================ -->

        <property name="sizePolicy">
         <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
       </widget>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>463</width>
     <height>25</height>
    </rect>
   </property>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>


/


cmake_minimum_required(VERSION 2.8.8)
if(POLICY CMP0020)
  cmake_policy(SET CMP0020 NEW)
endif()
if(POLICY CMP0025)
  cmake_policy(SET CMP0025 NEW) # CMake 3.0
endif()
if(POLICY CMP0043)
  cmake_policy(SET CMP0043 NEW) # CMake 3.0
endif()
if(POLICY CMP0053)
  cmake_policy(SET CMP0053 NEW) # CMake 3.1
endif()

project(Hello_ITK_VTK_QtWidgets)

find_package(ITK REQUIRED)
include(${ITK_USE_FILE})

find_package(VTK REQUIRED)
include(${VTK_USE_FILE})

if("${VTK_QT_VERSION}" STREQUAL "")
  message(FATAL_ERROR "VTK was not built with Qt")
endif()


# Set your files and resources here
set( Srcs hello_itk_vtk_qtwidgets.cpp main.cpp)

set( Hdrs hello_itk_vtk_qtwidgets.h )

set( MOC_Hdrs hello_itk_vtk_qtwidgets.h )

set( UIs hello_itk_vtk_qtwidgets.ui )

include_directories(
  ${CMAKE_CURRENT_BINARY_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}
)

# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)

find_package(Qt5 COMPONENTS Widgets REQUIRED QUIET)
qt5_wrap_ui(UI_Srcs ${UIs})

add_executable( Hello_ITK_VTK_QtWidgets ${Srcs} ${Hdrs} ${UI_Srcs} ${MOC_Hdrs} )
qt5_use_modules( Hello_ITK_VTK_QtWidgets Core Gui Widgets )
target_link_libraries( Hello_ITK_VTK_QtWidgets ${ITK_LIBRARIES} ${VTK_LIBRARIES} )



/

程序运行截图:

/








































  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值