ITK在写图像文件时发生异常的解决方法

本文由Markdown语法编辑器编辑完成。

ITK提供了图像文件读入和写出的接口,分别是
itk::ImageFileReader和itk::ImageFileWriter。但是,在实际应用写文件的接口时,却发生了异常。例如当想将itkImage写出一幅png格式的图像时,系统报异常了。

经过查阅,最终得出的结论是,在写出文件时,需要为writer指出写出文件的类型名。用SetImageIO()的接口指定类型即可解决该问题。

itk::PNGImageIO::Pointer imageIO = itk::PNGImageIO::New();
writer->SetImageIO( imageIO );

//Test Code Begin:

    ImageType::Pointer& image2D
    //指出输出文件的输出路径和文件名称.
    char *output_name = "D:\\image.png";

    const     unsigned int   Dimension = 3;
    typedef   int         InputPixelType;
    typedef   unsigned char OutputPixelType;

    typedef itk::Image< InputPixelType,  Dimension >   InputImageType;
    typedef itk::Image< OutputPixelType, Dimension >   OutputImageType;

    typedef itk::RescaleIntensityImageFilter<
            ImageType, OutputImageType > RescaleFilterType;
    RescaleFilterType::Pointer rescaler = RescaleFilterType::New();
    rescaler->SetOutputMinimum(   0 );
    rescaler->SetOutputMaximum( 255 );
    rescaler->SetInput( image2D );

    typedef itk::ImageFileWriter< OutputImageType >  WriterType;
    WriterType::Pointer writer = WriterType::New();
    itk::PNGImageIO::Pointer imageIO = itk::PNGImageIO::New();
    writer->SetImageIO( imageIO );
    writer->SetFileName( output_name );
    writer->SetInput( rescaler->GetOutput() );

    try
    {
        std::cout << "Writing image: " << output_name << std::endl;
        writer->Update();
    }
    catch( itk::ExceptionObject & err )
    {
        std::cerr << "ERROR: ExceptionObject caught !" << std::endl;
        std::cerr << err << std::endl;
    }
    //Test Code End.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inter_peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值