N
none
In the below code the call:
DisplayImage(job.GetImage());
just shows a black image even though it looks fine when its created.
int main() {
typedef MyImg MyImgType;
typedef Job<MyImgType> JobType;
MyImageApp<MyImgType> app;
JobType job;
app.Run(job);
// This only shows a black image!
DisplayImage(job.GetImage());
return 0;
}
// ============== MyImageApp ======================
template<typename F>
class MyImageApp {
public:
void Run(JobType & job) {
// The 'processor' instance will die when this function returns.
Processor<F> processor;
processor.Process();
// Not possble to copy the image from the processor into the job!?
job.SetImage(processor.GetProcessedImage());
}
};
// ============== Processor =======================
template <typename FI>
class Processor {
public:
typedef FI FixedImageType;
typedef itk::ResampleImageFilter< FixedImageType, FixedImageType > ResampleFilterType;
WarpProcessor ();
virtual ~WarpProcessor ();
void Process();
// Returning a copy not a reference!
typename FixedImageType:ointer GetProcessedImage(){return this->imageW;}
private:
typename FixedImageType:ointer imageW;
};
template <typename FI>
void
Processor<FI>:rocess() {
// Computing stuff
// ...
// Copying the result into the imageW instance
CopyImageToImage<typename FixedImageType:ointer, FixedImageType>(
resampler->GetOutput(),
imageW);
// image looks fine when viewed here!
DisplayImage(imageW)
}
// ================== Job =======================
template<typename F>
class Job {
public:
typedef F FixedImageType;
// Return copy!
typename FixedImageType:ointer GetImage() {return this->imageR;}
void SetImage(typename FixedImageType:ointer image) {this->imageR = image;}
private:
typename FixedImageType:ointer imageR;
};
Any ideas on why the image looks fine when calling:
DisplayImage(imageW)
in Processor:rocess() and pitch black when calling:
DisplayImage(job.GetImage());
in main?
DisplayImage(job.GetImage());
just shows a black image even though it looks fine when its created.
int main() {
typedef MyImg MyImgType;
typedef Job<MyImgType> JobType;
MyImageApp<MyImgType> app;
JobType job;
app.Run(job);
// This only shows a black image!
DisplayImage(job.GetImage());
return 0;
}
// ============== MyImageApp ======================
template<typename F>
class MyImageApp {
public:
void Run(JobType & job) {
// The 'processor' instance will die when this function returns.
Processor<F> processor;
processor.Process();
// Not possble to copy the image from the processor into the job!?
job.SetImage(processor.GetProcessedImage());
}
};
// ============== Processor =======================
template <typename FI>
class Processor {
public:
typedef FI FixedImageType;
typedef itk::ResampleImageFilter< FixedImageType, FixedImageType > ResampleFilterType;
WarpProcessor ();
virtual ~WarpProcessor ();
void Process();
// Returning a copy not a reference!
typename FixedImageType:ointer GetProcessedImage(){return this->imageW;}
private:
typename FixedImageType:ointer imageW;
};
template <typename FI>
void
Processor<FI>:rocess() {
// Computing stuff
// ...
// Copying the result into the imageW instance
CopyImageToImage<typename FixedImageType:ointer, FixedImageType>(
resampler->GetOutput(),
imageW);
// image looks fine when viewed here!
DisplayImage(imageW)
}
// ================== Job =======================
template<typename F>
class Job {
public:
typedef F FixedImageType;
// Return copy!
typename FixedImageType:ointer GetImage() {return this->imageR;}
void SetImage(typename FixedImageType:ointer image) {this->imageR = image;}
private:
typename FixedImageType:ointer imageR;
};
Any ideas on why the image looks fine when calling:
DisplayImage(imageW)
in Processor:rocess() and pitch black when calling:
DisplayImage(job.GetImage());
in main?