我想在C#程序中使用simpleitk读取dicom或png图像,并将结果显示在pictureBox中。据我所知,图片框只允许“system.drawing.image”而不是itk。有没有办法做到这一点。 她是我的代码:
OpenFileDialog fd = new OpenFileDialog();
fd.Filter = "PNG|*.png";
if (fd.ShowDialog() == DialogResult.OK)
{
string file = fd.FileName;
ImageFileReader reader = new ImageFileReader();
reader.SetFileName(file);
itk.simple.Image image = reader.Execute();
Box.Image = image;
}
答案 0 :(得分:3)
您需要访问SimpleITK所持有的原始图像缓冲区。这可以通过Image :: GetBufferAs“TYPE”方法访问。
以下是使用此方法的简要example:
// Cast so we know the the pixel type
input = SimpleITK.Cast(input, PixelId.sitkFloat32);
// calculate the nubmer of pixels
VectorUInt32 size = input.GetSize();
int len = 1;
for (int dim = 0; dim < input.GetDimension(); dim++) {
len *= (int)size[dim];
}
IntPtr buffer = input.GetBufferAsFloat();
我相信这可以转换为带有.Net的Bitmap。
答案 1 :(得分:-2)
using (OpenFileDialog fd = new OpenFileDialog())
{
fd.Filter = "PNG|*.png";
if (fd.ShowDialog() == DialogResult.OK)
{
Box.Image = new Bitmap(fd.FileName);
}
}