public static int Main(string[] args) { string filename = args[0]; vtkGDCMImageReader reader = vtkGDCMImageReader.New(); reader.SetFileName(filename); reader.Update(); vtkMedicalImageProperties prop = reader.GetMedicalImageProperties(); System.Console.WriteLine(prop.GetPatientName()); // if (reader.GetImageFormat() == vtkgdcm.vtkgdcm.VTK_LUMINANCE) // MONOCHROME2 { System.Console.WriteLine("Image is MONOCHROME2"); // } // Just for fun, invert the direction cosines, output should reflect that: vtkMatrix4x4 dircos = reader.GetDirectionCosines(); dircos.Invert(); string outfilename = args[1]; vtkGDCMImageWriter writer = vtkGDCMImageWriter.New(); writer.SetMedicalImageProperties(reader.GetMedicalImageProperties()); writer.SetDirectionCosines(dircos); writer.SetShift(reader.GetShift()); writer.SetScale(reader.GetScale()); writer.SetImageFormat(reader.GetImageFormat()); writer.SetFileName(outfilename); //writer.SetInputConnection( reader.GetOutputPort() ); // new writer.SetInput(reader.GetOutput()); // old writer.Write(); return(0); }
public static int Main(string[] args) { string filename = args[0]; string outfilename = args[1]; string outfilename2 = args[2]; vtkgdcm.vtkGDCMImageReader reader = new vtkgdcm.vtkGDCMImageReader(); reader.SetFileName(filename); // When calling multiple times creation of C# object from the same C++ object it triggers a: //error: potential refcounting error: Duplicate rawCppThis - weak reference that is still alive. Attempting to add '0x00b2dc10' again. // Allowing new wrapped object to take over table key... // Original object should *not* have been destroyed while we still had it in our table without notifying us... //reader.GetOutput(); //reader.GetOutput(); System.Console.WriteLine(reader.ToString()); // Test the ToString compat with Activiz vtkGDCMImageWriter writer = new vtkGDCMImageWriter(); writer.SetInput(reader.GetOutput()); writer.SetFileName(outfilename2); writer.Write(); System.Console.WriteLine(reader.GetOutput().ToString()); // Test the ToString compat with Activiz System.Console.WriteLine(writer.ToString()); // Test the ToString compat with Activiz vtkPNGWriter pngwriter = new vtkPNGWriter(); pngwriter.SetInput(reader.GetOutput()); pngwriter.SetFileName(outfilename); pngwriter.Write(); // at that point the .Write() should have triggered an Update() on the reader: if (reader.GetImageFormat() == vtkgdcm.vtkgdcm.VTK_LUMINANCE) // MONOCHROME2 { System.Console.WriteLine("Image is MONOCHROME2"); // } vtkPNGReader bmpreader = new vtkPNGReader(); bmpreader.SetFileName(outfilename); vtkMedicalImageProperties prop = new vtkMedicalImageProperties(); prop.SetModality("MR"); vtkMatrix4x4 dircos = reader.GetDirectionCosines(); dircos.Invert(); vtkGDCMImageWriter writer2 = new vtkGDCMImageWriter(); writer2.SetFileName(outfilename2); writer2.SetDirectionCosines(dircos); writer2.SetMedicalImageProperties(prop); writer2.SetInput(bmpreader.GetOutput()); writer2.Write(); return(0); }