1 /*=========================================================================
2 Program: vv http://www.creatis.insa-lyon.fr/rio/vv
5 - University of LYON http://www.universite-lyon.fr/
6 - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
7 - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the copyright notices for more information.
13 It is distributed under dual licence
15 - BSD See included LICENSE.txt file
16 - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ======================================================================-====*/
18 #ifndef VVTOOLINPUTSELECTORWIDGET_CXX
19 #define VVTOOLINPUTSELECTORWIDGET_CXX
22 #include "vvLabelImageLoaderWidget.h"
23 #include "vvSlicerManager.h"
24 #include "vvImageReader.h"
25 #include "vvImageWriter.h"
28 #include <vtkImageData.h>
31 #include <QAbstractButton>
32 #include <QFileDialog>
33 #include <QMessageBox>
35 //------------------------------------------------------------------------------
36 vvLabelImageLoaderWidget::vvLabelImageLoaderWidget(QWidget * parent, Qt::WindowFlags f):
41 connect(mOpenButton, SIGNAL(clicked()), this, SLOT(OpenImage()));
43 //------------------------------------------------------------------------------
46 //------------------------------------------------------------------------------
47 vvImage::Pointer vvLabelImageLoaderWidget::GetImage()
51 //------------------------------------------------------------------------------
54 //------------------------------------------------------------------------------
55 double vvLabelImageLoaderWidget::GetBackgroundValue()
57 return mBackgroundValueSpinBox->value();
59 //------------------------------------------------------------------------------
62 //------------------------------------------------------------------------------
63 void vvLabelImageLoaderWidget::OpenImage()
68 QString Extensions = "Images files ( *.mhd *.hdr *.his)";
69 Extensions += ";;All Files (*)";
71 QFileDialog::getOpenFileName(this,tr("Open mask image"),
72 "",Extensions); //mMainWindow->GetInputPathName()
73 if (filename == "") return; // nothing to do
76 vvImageReader * mReader = new vvImageReader;
77 mReader->SetInputFilename(filename.toStdString());
78 mReader->Update(IMAGE);
79 if (mReader->GetLastError().size() != 0) {
80 std::cerr << "Error while reading " << filename.toStdString() << std::endl;
81 QString error = "Cannot open file \n";
82 error += mReader->GetLastError().c_str();
83 QMessageBox::information(this,tr("Reading problem"),error);
88 // Create output pointer
89 m_Output = vvImage::New();
91 // Check type and convert if needed
92 vvImage::Pointer temp = mReader->GetOutput();
94 if (temp->GetNumberOfDimensions() != 3) {
95 std::cerr << "Error while reading " << filename.toStdString() << std::endl;
97 error = QString("Cannot open file %1 because it is not 3D\n").arg(filename);
98 QMessageBox::information(this,tr("Reading problem"),error);
103 DD(temp->GetScalarTypeAsITKString());
104 if (temp->GetScalarTypeAsITKString() != "unsigned_char") {
106 vtkImageData * p = vtkImageData::New();
107 p->SetExtent(temp->GetFirstVTKImageData()->GetExtent ()); // Only first ! could not be 4D
108 p->SetScalarTypeToUnsignedChar();
109 p->AllocateScalars ();
110 p->CopyAndCastFrom(temp->GetFirstVTKImageData(), temp->GetFirstVTKImageData()->GetExtent ());
111 m_Output->AddImage(p);
112 vvImageWriter * writer = new vvImageWriter;
113 writer->SetOutputFileName("a.mhd");
114 writer->SetInput(m_Output);
122 mLabelInputInfo->setText(vtksys::SystemTools::GetFilenameName(filename.toStdString()).c_str());
125 //------------------------------------------------------------------------------