[Insight-users] unexpectided error using extract image filter
john smith
mkitkinsightuser at gmail.com
Tue May 31 04:49:52 EDT 2011
Hello, I am running the extract image filter, but I use two functions, one
for loading the reader and one for use the ExtractImageFilter. The error and
the cofe follows. I hope somebody could help me as I can't understand what
is wrong. I also use Qt, but the problem I think in ITK code.
error (the error point is highlighted) :
*error C2664: 'void
itk::ImageToImageFilter<TInputImage,TOutputImage>::SetInput(const
itk::Image<TPixel,VImageDimension> *)' : cannot convert parameter 1 from
'itk::Image<TPixel,VImageDimension> *' to 'const
itk::Image<TPixel,VImageDimension> *
////////// mainwindow.cpp //////////////////
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "canvas.h"
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkExtractImageFilter.h"
#include <itkSize.h>
QString fileName;
unsigned long size_x;
unsigned long size_y;
unsigned long size_z;
typedef unsigned short PixelType;
const unsigned int Dimension = 3;
typedef itk::Image< PixelType, Dimension > InputImageType;
typedef itk::ImageFileReader< InputImageType > ReaderType;
ReaderType::Pointer reader;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->graphicsView_inputImage->setScene(scene=new Canvas());
connect(scene,SIGNAL(mousejustpressed(int,int)),this,SLOT(mousejustpressed(int,int)));
QObject::connect(ui->pushButton_openFile, SIGNAL(clicked()), this,
SLOT(push_button_File()));
QObject::connect(ui->pushButton_slice_z, SIGNAL(clicked()), this,
SLOT(z_slice_extract()));
connect(ui->verticalScrollBar_z, SIGNAL(valueChanged()), this,
SLOT(()));
typedef unsigned char InputPixelType;
typedef itk::Image< InputPixelType, 3 > InputImageType;
typedef itk::ImageFileReader< InputImageType > ReaderType;
ReaderType::Pointer reader = ReaderType::New();
}
void MainWindow::push_button_File()
{
///unsigned char to display in .png format
reader->SetFileName("C:/Users/......../test.png");
reader->Update();
}
void MainWindow::z_slice_extract()
{
///unsigned char to display in .png format
typedef unsigned char InputPixelType;
typedef unsigned char OutputPixelType;
typedef itk::Image< InputPixelType, 3 > InputImageType;
typedef itk::Image< OutputPixelType, 2 > OutputImageType;
typedef itk::ImageFileReader< InputImageType > ReaderType;
typedef itk::ImageFileWriter< OutputImageType > WriterType;
WriterType::Pointer writer = WriterType::New();
writer->SetFileName( "2D.png" );
typedef itk::ExtractImageFilter< InputImageType, OutputImageType >
FilterType;
FilterType::Pointer filter = FilterType::New();
InputImageType::RegionType inputRegion =
reader->GetOutput()->GetLargestPossibleRegion();
InputImageType::SizeType size = inputRegion.GetSize();
// get the size of the hole 3D image
unsigned long size_x = size[0];
unsigned long size_y = size[1];
unsigned long size_z = size[2];
// get slices of z coordiante
size[2] = 0;
InputImageType::IndexType start = inputRegion.GetIndex();
ui->verticalScrollBar_z->setRange(1,size_z);
unsigned int sliceNumber = ui->verticalScrollBar_z->value();
start[2] = sliceNumber;
InputImageType::RegionType desiredRegion;
desiredRegion.SetSize( size );
desiredRegion.SetIndex( start );
filter->SetExtractionRegion( desiredRegion );
filter->SetInput( reader->GetOutput() );
writer->SetInput( filter->GetOutput() );
try
{
writer->Update();
}
catch( itk::ExceptionObject & err )
{
std::cerr << "ExceptionObject caught !" << std::endl;
std::cerr << err << std::endl;
}
scene->addPixmap(QPixmap("2D.png"));
ui->graphicsView_inputImage->setScene(scene);
// taking the size of the loaded image
ui->label_4->setText(QString("size x:%1").arg(size_x));
ui->label_5->setText(QString("size y:%1").arg(size_y));
ui->label_6->setText(QString("size z:%1").arg(size_z));
return;
}
void MainWindow::mousejustpressed(int x,int y)
{
int k1=256-y;
unsigned char value;
QImage image(scene->sceneRect().size().toSize(),
QImage::Format_RGB32);
QPainter painter(&image);
scene->render(&painter);
value=image.pixel(x,k1);
/**QImage buffer = QImage(1,1, QImage::Format_RGB32);
QPainter painter(&buffer);
scene->render(&painter, QRectF(0.0, 0.0, 1.0, 1.0), QRectF(x, y, 1.0,
1.0));
int value = qGray(buffer.pixel(0,0));
*/
ui->label->setText(QString("x:%1").arg(x));
ui->label_2->setText(QString("y:%1").arg(k1));
ui->label_3->setText(QString("pixel value:%1").arg(value));
}
MainWindow::~MainWindow()
{
delete ui;
}
////////////////// mainwindow.h //////////////
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QGraphicsScene>
#include "canvas.h"
#include "itkImage.h"
#include "itkImageFileReader.h"
#include <qstring.h>
#include <qdir.h>
#include <qfiledialog.h>
#include <qmessagebox.h>
#include <qlabel.h>
#include <qgraphicsScene.h>
#include <QGraphicsPixmapItem>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
Canvas *scene;
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
public slots:
void mousejustpressed(int x,int y);
public slots:
void push_button_File();
void z_slice_extract();
};
#endif // MAINWINDOW_H
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20110531/e96438fa/attachment.htm>
More information about the Insight-users
mailing list