GDCM 3.0.24
HelloVizWorld.cxx
/*=========================================================================
Program: GDCM (Grassroots DICOM). A DICOM library
Copyright (c) 2006-2011 Mathieu Malaterre
All rights reserved.
See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/*
* Basic example for dealing with a DICOM file that contains an Image
* (read: Pixel Data element)
*/
#include "gdcmImage.h"
#include <iostream>
int main(int argc, char *argv[])
{
if( argc < 3 )
{
std::cerr << argv[0] << " input.dcm output.dcm" << std::endl;
return 1;
}
const char *filename = argv[1];
const char *outfilename = argv[2];
// Instantiate the image reader:
reader.SetFileName( filename );
if( !reader.Read() )
{
std::cerr << "Could not read: " << filename << std::endl;
return 1;
}
// If we reach here, we know for sure 2 things:
// 1. It is a valid DICOM
// 2. And it contains an Image !
// The output of superclass gdcm::Reader is a gdcm::File
//gdcm::File &file = reader.GetFile();
// The other output of gdcm::ImageReader is a gdcm::Image
const gdcm::Image &image = reader.GetImage();
// Let's get some property from the image:
unsigned int ndim = image.GetNumberOfDimensions();
// Dimensions of the image:
const unsigned int *dims = image.GetDimensions();
// Origin
const double *origin = image.GetOrigin();
for(unsigned int i = 0; i < ndim; ++i)
{
std::cout << "Dim(" << i << "): " << dims[i] << std::endl;
}
for(unsigned int i = 0; i < ndim; ++i)
{
std::cout << "Origin(" << i << "): " << origin[i] << std::endl;
}
std::cout << "PhotometricInterpretation: " << pi << std::endl;
// Write the modified DataSet back to disk
writer.SetImage( image );
writer.SetFileName( outfilename );
//writer.SetFile( file ); // We purposely NOT copy the meta information from the input
// file, and instead only pass the image
if( !writer.Write() )
{
std::cerr << "Could not write: " << outfilename << std::endl;
return 1;
}
return 0;
}
const PhotometricInterpretation & GetPhotometricInterpretation() const
return the photometric interpretation
const unsigned int * GetDimensions() const
Return the dimension of the pixel data, first dimension (x), then 2nd (y), then 3rd (z)....
unsigned int GetNumberOfDimensions() const
Return the number of dimension of the pixel data bytes; for example 2 for a 2D matrices of values.
ImageReader.
Definition gdcmImageReader.h:34
const Image & GetImage() const
Return the read image.
bool Read() override
ImageWriter.
Definition gdcmImageWriter.h:33
bool Write() override
Write.
Image.
Definition gdcmImage.h:47
const double * GetOrigin() const
Class to represent an PhotometricInterpretation.
Definition gdcmPhotometricInterpretation.h:29
virtual void SetImage(Pixmap const &img)
void SetFileName(const char *filename_native)
void SetFileName(const char *filename_native)
Set the filename of DICOM file to write: