From a328f39ae12e4c1ad455e3bee03b6c8edc570a21 Mon Sep 17 00:00:00 2001 From: Rashad Kanavath <rashad.kanavath@c-s.fr> Date: Fri, 9 Sep 2016 13:54:20 +0200 Subject: [PATCH] SWIG: check a simply dynamic_cast before using castImageFilter (issue with numpy.float and float) --- .../include/otbWrapperInputImageParameter.txx | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx index ccec52397e..8a385e0c1f 100644 --- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx +++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.txx @@ -183,18 +183,25 @@ template <class TInputImage, class TOutputImage> TOutputImage* InputImageParameter::SimpleCastImage() { - TInputImage* realInputImage = dynamic_cast<TInputImage*>(m_Image.GetPointer()); + if ( dynamic_cast<TOutputImage*> (m_Image.GetPointer()) ) + { + return dynamic_cast<TOutputImage*> (m_Image.GetPointer()); + } + else + { + TInputImage* realInputImage = dynamic_cast<TInputImage*>(m_Image.GetPointer()); - typedef itk::CastImageFilter<TInputImage, TOutputImage> CasterType; - typename CasterType::Pointer caster = CasterType::New(); + typedef itk::CastImageFilter<TInputImage, TOutputImage> CasterType; + typename CasterType::Pointer caster = CasterType::New(); - caster->SetInput(realInputImage); - caster->UpdateOutputInformation(); + caster->SetInput(realInputImage); + caster->UpdateOutputInformation(); - m_Image = caster->GetOutput(); - m_Caster = caster; + m_Image = caster->GetOutput(); + m_Caster = caster; - return caster->GetOutput(); + return caster->GetOutput(); + } } -- GitLab