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 ======================================================================-====*/
19 #ifndef VVTOOLINPUTSELECTORWIDGET_CXX
20 #define VVTOOLINPUTSELECTORWIDGET_CXX
23 #include "vvLabelImageLoaderWidget.h"
24 #include "vvSlicerManager.h"
25 #include "vvImageReader.h"
26 #include "vvImageWriter.h"
29 #include <vtkImageData.h>
32 #include <QAbstractButton>
33 #include <QFileDialog>
34 #include <QMessageBox>
36 //------------------------------------------------------------------------------
37 vvLabelImageLoaderWidget::vvLabelImageLoaderWidget(QWidget * parent, Qt::WindowFlags f):
42 connect(mOpenButton, SIGNAL(clicked()), this, SLOT(OpenImage()));
44 //------------------------------------------------------------------------------
47 //------------------------------------------------------------------------------
48 vvImage::Pointer vvLabelImageLoaderWidget::GetImage()
52 //------------------------------------------------------------------------------
55 //------------------------------------------------------------------------------
56 double vvLabelImageLoaderWidget::GetBackgroundValue()
58 return mBackgroundValueSpinBox->value();
60 //------------------------------------------------------------------------------
63 //------------------------------------------------------------------------------
64 void vvLabelImageLoaderWidget::SetText(QString t)
66 mOpenLabel->setText(t);
68 //------------------------------------------------------------------------------
71 //------------------------------------------------------------------------------
72 void vvLabelImageLoaderWidget::OpenImage()
77 QString Extensions = "Images files ( *.mhd *.hdr *.his)";
78 Extensions += ";;All Files (*)";
80 QFileDialog::getOpenFileName(this,tr("Open mask image"),
81 "",Extensions); //mMainWindow->GetInputPathName()
82 if (filename == "") return; // nothing to do
85 vvImageReader * mReader = new vvImageReader;
86 mReader->SetInputFilename(filename.toStdString());
87 mReader->Update(IMAGE);
88 if (mReader->GetLastError().size() != 0) {
89 std::cerr << "Error while reading " << filename.toStdString() << std::endl;
90 QString error = "Cannot open file \n";
91 error += mReader->GetLastError().c_str();
92 QMessageBox::information(this,tr("Reading problem"),error);
97 // Create output pointer
98 m_Output = vvImage::New();
100 // Check type and convert if needed
101 vvImage::Pointer temp = mReader->GetOutput();
103 if (temp->GetNumberOfDimensions() != 3) {
104 std::cerr << "Error while reading " << filename.toStdString() << std::endl;
106 error = QString("Cannot open file %1 because it is not 3D\n").arg(filename);
107 QMessageBox::information(this,tr("Reading problem"),error);
112 DD(temp->GetScalarTypeAsITKString());
113 if (temp->GetScalarTypeAsITKString() != "unsigned_char") {
115 vtkImageData * p = vtkImageData::New();
116 p->SetExtent(temp->GetFirstVTKImageData()->GetExtent ()); // Only first ! could not be 4D
117 p->SetScalarTypeToUnsignedChar();
118 p->AllocateScalars ();
119 p->CopyAndCastFrom(temp->GetFirstVTKImageData(), temp->GetFirstVTKImageData()->GetExtent ());
120 m_Output->AddImage(p);
121 vvImageWriter * writer = new vvImageWriter;
122 writer->SetOutputFileName("a.mhd");
123 writer->SetInput(m_Output);
131 mLabelInputInfo->setText(vtksys::SystemTools::GetFilenameName(filename.toStdString()).c_str());
134 //------------------------------------------------------------------------------