ITK阈值分割jpg图片

#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkPNGImageIOFactory.h"
#include "itkJPEGImageIOFactory.h"
#include "itkThresholdImageFilter.h"
#include "itkImageToVTKImageFilter.h"

#include "vtkImageActor.h"
//#include "vtkImageData.h"
#include"vtkSmartPointer.h"
#include "vtkImageFlip.h"
#include "vtkImageViewer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkAutoInit.h" 
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);

int main(int argc, char ** argv) {
    typedef itk::Image<unsigned char, 2> ImageType;

    typedef itk::ThresholdImageFilter< ImageType > FilterType;

    typedef itk::ImageFileReader<ImageType> ReaderType;
    typedef itk::ImageFileWriter<ImageType> WriterType;

    typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;  //connenct itk and vtk

    itk::JPEGImageIOFactory::RegisterOneFactory();
    //itk::PNGImageIOFactory::RegisterOneFactory();

    FilterType::Pointer filter = FilterType::New();
    ReaderType::Pointer reader = ReaderType::New();
    WriterType::Pointer writer = WriterType::New();
    ConnectorType::Pointer connector = ConnectorType::New();

    reader->SetFileName("test1.jpg");    //要读取的文件名
    writer->SetFileName("test_.jpg");    //写入的文件名

    filter->SetInput(reader->GetOutput());
    filter->SetOutsideValue(0);
    filter->ThresholdBelow(100);
    filter->Update();

    //writer->SetInput(reader->GetOutput());
    writer->SetInput(filter->GetOutput());
    try {
        writer->Update();
    }
    catch (itk::ExceptionObject &err) {
        std::cerr << "ExceptionObject Caught" << std::endl;
        std::cerr << err << std::endl;
        system("pause");
        return EXIT_FAILURE;
    }

        connector->SetInput(filter->GetOutput());
        connector->Update();


        /*vtkImageActor *m_pvtkImageActor = vtkImageActor::New();
        m_pvtkImageActor->SetOrigin(m_pvtkImageActor->GetCenter());
        m_pvtkImageActor->RotateX(180);*/


        //vtkImageFlip *imageflip = vtkImageFlip::New();
        //imageflip->SetInputConnection(connector->GetOutput());
        //imageflip->SetFilteredAxes(1);//Y轴

        //vtkImageFlip *imageflip = vtkImageFlip::New();
        //imageflip->SetInput(connector->GetOutput());
        //imageflip->SetFilteredAxes(1);//Y轴
        //imageflip->Update();

        //vtkSmartPointer<vtkImageFlip> flip = vtkSmartPointer<vtkImageFlip>::New();
        //flip->SetInput(connector->GetOutput());
        //flip->SetFilteredAxes(1);
        //flip->Update();
    
        vtkImageViewer *viewer = vtkImageViewer::New();
        vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::New();
        /*viewer->SetInputData(imageflip->GetOutput());*/
        viewer->SetInputData(connector->GetOutput());
        viewer->SetupInteractor(interactor);
        viewer->GetRenderWindow()->SetSize(500, 500);//set window size
        viewer->SetColorWindow(255); //set window color
        viewer->SetColorLevel(128);   //set the level of window
        viewer->Render();
    
        interactor->Initialize();
        interactor->Start();
    
    return EXIT_SUCCESS;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值