首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ITK编写图像

使用ITK编写图像
EN

Stack Overflow用户
提问于 2015-01-21 02:44:56
回答 1查看 941关注 0票数 0

我是ITK的新手,我正在尝试写我刚刚读过的图片。图像已成功写入,但当我尝试打开图像时,它只是一个黑色图像。但是,大小与它应该的大小完全相同(它与输入图像大小相同)。我不明白问题出在哪里,为什么图像是黑色的。下面是我的代码:

代码语言:javascript
运行
复制
typedef unsigned char PixelType;
const unsigned int Dimension = 2;
typedef itk::Image< PixelType, Dimension > ImageType; // ImageType is an image with 2D and unsigned number of pixels
typedef itk::ImageFileReader<ImageType> ReaderType;
typedef itk::ImageFileWriter< ImageType> WriterType;

typedef itk::ImageFileReader<ImageType> FileReaderType;


using namespace std;

ReaderType::Pointer LoadImage(string);
void WriteImage(string,ImageType::Pointer);


int main()
{
    string fileName = "test.tiff";
    string outFileName = "out.tiff";
    ReaderType::Pointer reader = LoadImage(fileName);
    ImageType::Pointer image = reader->GetOutput(); 


    WriteImage(outFileName, image);
    //cout<<reader<<endl;
    //cout<<image<<endl;

  return EXIT_SUCCESS;
}


ReaderType::Pointer LoadImage(string filename){
    itk::TIFFImageIO::Pointer tiffImageIO = itk::TIFFImageIO::New();
    ReaderType::Pointer reader = ReaderType::New();
    reader->SetFileName("test.tiff");
    reader->SetImageIO(tiffImageIO);
    try{
        reader->Update();
    }
    catch(itk::ExceptionObject & e){
        cerr<<e.GetDescription()<<endl;
    }
    return reader;
}


void WriteImage(string filename, ImageType::Pointer image){
  itk::TIFFImageIO::Pointer tiffImageIO = itk::TIFFImageIO::New();
  WriterType::Pointer writer = WriterType::New();
  writer->SetFileName(filename);
  writer->SetImageIO(tiffImageIO);
  writer->SetInput(image);
  try{
      writer->Update(); 
      cout<<"Image has been written!"<<endl;
  }
  catch(itk::ExceptionObject & e){
      std::cerr << e.GetDescription() << std::endl;
  } 
}
EN

回答 1

Stack Overflow用户

发布于 2015-01-21 05:38:01

您正在使用什么程序来查看您的图像?你能调整窗口,水平或对比度吗?

当您判断您的图像在视觉上是黑色时,您的图像查看器尝试显示的动态范围可能与图像中的不同。

您正在将图像读取为“无符号整数”。如果你的图像最初在0-4294967296的范围内,并且你写出的像素类型的范围是0-255,如果你的查看器试图显示这个范围,你会看到一个黑色的图像。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28052882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档