使用 ITK 写入映像
Writing image using ITK
我是ITK的新手,我正在尝试编写我刚刚阅读的图像。图像已成功写入,但是当我尝试打开图像时,它只是一个黑色图像。但是,大小与应有的大小完全相同(与输入图像大小相同)。我不明白问题是什么以及为什么图像是黑色的。这是我的代码:
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;
}
}
您使用什么程序来查看图像?您可以调整窗口,级别或对比度吗?
当您判断图像在视觉上是黑色的时,可能是图像查看器尝试显示的动态范围与图像中的动态范围不同。
您正在将图像读入"无符号整数"。如果您的图像最初在 0-255 范围内,并且您使用范围为 0-4294967296 的像素类型将其写出,如果您的查看器尝试显示该范围,您将看到黑色图像。
相关文章:
- SDL 映像:无法打开映像,仅显示错误消息
- C++ W:使用子线程的运行映像
- 从头开始为应用程序创建 docker 映像是否有意义?
- 主机箱/bash 未执行 docker 映像
- 无法从Java读取C++中保存的Opencv Mat映像
- CMake链接库在Docker映像中失败
- 在.NET Core 3.1中运行托管C++/CLI程序集时,映像格式错误
- 如何在C++中使用ZeroMQ通信多个映像
- 无法写入映像 SimpleElastix (Python)
- 如何在 windowsservercore Docker 映像上安装执行本机C++ DLL/EXE 所需的所有依赖二进制
- 无法将映像加载到 SDL2 程序
- 从 docker 映像构建中省略安装文件
- 使用 OpenGL 中的 imageStore 写入映像
- QML 映像不会在映像源中加载具有非 ASCII 字符的图像
- 警告在将 OpenCV 垫映像投射到 QImage 时使用旧式转换
- 在控制台上显示 BMP 映像时堆损坏
- 处理映像上的多个转换
- 我可以将带有依赖项的C++库作为 Docker 映像分发吗?
- 如何在Python中实现ITK映像和SimpleItk图像之间的转换
- 使用 ITK 写入映像