[Insight-users] ITK 4.1 ImageIOFactory Could not create IO Object

Sebastian Losch seb.losch at googlemail.com
Wed May 23 19:47:45 EDT 2012


Hi Luis!

Thanks for your response. As i wrote in my first post the .png file is 
in the same folder as the executable, so that cannot be the reason. When 
i change the filename to something different (e.g. to a file which does 
not exists) then itk throws a different exception (file not found).

Sebastian

Am 24.05.2012 01:40, schrieb Luis Ibanez:
> Hi Sebastian,
>
> You are using a plain filename (instead of a full path)
> to point to your image:
>
> reader->SetFileName("input.png");
>
>
> The factories are telling you that the file
>
>                   "input.png"
>
> is not in the same directory that the executable
> that you build with Visual Studio.
>
>
> You may want to try one of these tree options:
>
>
> 1) Use a full path to point to your image,
>      something like:
>
>                C:\MyImages\input.png
> or
> 2) Copy the image to where the executable is
>
> or
>
> 3) Copy the executable to where the image is
>     and run the executable from that directory
>
>
>
> Option (1) is probably the best way to go.
>
>
>
> Ideally your code should have been:
>
>
> A) If using a command line approach
>
> reader->SetFileName( argv[1] );
> or,
>
> B) If using a GUI to get the filename from the user:
>
>       const char * filename = GetMeAFileNameFromGUI();
>
> reader->SetFileName( filename );
>
>
>
>    Hope this helps,
>
>
>         Luis
>
>
> -----------------------------------------
> On Tue, May 22, 2012 at 4:35 AM, Sebastian Losch 
> <seb.losch at googlemail.com <mailto:seb.losch at googlemail.com>> wrote:
>
>     Hi!
>
>     I am having problems getting the ImageFileReader and
>     ImageFileWriter to work. I just want to read a PNG File, apply a
>     filter and write it back to the harddrive. I found out that there
>     is a problem in 4.1 with the ImageIOFactory registration, so i
>     register the PNGFactory manually. The .png file is in the same
>     folder as the executable. Here is my Code:
>
>     #include "itkImage.h"
>     #include "itkImageFileReader.h"
>     #include "itkImageFileWriter.h"
>     #include "itkCannyEdgeDetectionImageFilter.h"
>     #include "itkObjectFactoryBase.h"
>     #include "itkPNGImageIOFactory.h"
>
>     int main(int argc, char *argv[])
>     {
>     itk::ObjectFactoryBase::RegisterFactory(itk::PNGImageIOFactory::New());
>
>
>     double variance = 2.0;
>     double upperThreshold = 0.0;
>     double lowerThreshold = 0.0;
>
>     typedef itk::Image<double, 2>  DoubleImageType;
>
>     typedef itk::ImageFileReader<DoubleImageType> ReaderType;
>     ReaderType::Pointer reader = ReaderType::New();
>     reader->SetFileName("input.png");
>
>     typedef itk::CannyEdgeDetectionImageFilter <DoubleImageType,
>     DoubleImageType>
>     CannyEdgeDetectionImageFilterType;
>
>     CannyEdgeDetectionImageFilterType::Pointer cannyFilter =
>     CannyEdgeDetectionImageFilterType::New();
>     cannyFilter->SetInput(reader->GetOutput());
>     cannyFilter->SetVariance( variance );
>     cannyFilter->SetUpperThreshold( upperThreshold );
>     cannyFilter->SetLowerThreshold( lowerThreshold );
>
>     typedef itk::ImageFileWriter<DoubleImageType> WriterType;
>     WriterType::Pointer writer = WriterType::New();
>
>     writer->SetFileName("test.png");
>     writer->SetInput(cannyFilter->GetOutput());
>
>     try {
>     writer->Update();
>     } catch (itk::ExceptionObject &e) {
>     std::cerr << e << std::endl;
>     }
>
>     std::cout << "ENDE" << std::endl;
>     }
>
>     and this is the error:
>
>     itk::ImageFileReaderException (0059E4A8)
>     Location: "void __thiscall itk::ImageFileReader<class
>     itk::Image<double,2>,class itk::DefaultConvertPixelTraits<double>
>     >::GenerateOutputInformation(void)"
>     File: c:\libs\itk\include\itk-4.1\itkimagefilereader.hxx
>     Line: 143
>     Description:  Could not create IO object for file input.png
>       Tried to create one of the following:
>         PNGImageIO
>       You probably failed to set a file suffix, or
>         set the suffix to an unsupported type.
>
>
>     What am i doing wrong?
>
>     Thanks in advance, Sebastian
>
>     _____________________________________
>     Powered by www.kitware.com <http://www.kitware.com>
>
>     Visit other Kitware open-source projects at
>     http://www.kitware.com/opensource/opensource.html
>
>     Kitware offers ITK Training Courses, for more information visit:
>     http://www.kitware.com/products/protraining.php
>
>     Please keep messages on-topic and check the ITK FAQ at:
>     http://www.itk.org/Wiki/ITK_FAQ
>
>     Follow this link to subscribe/unsubscribe:
>     http://www.itk.org/mailman/listinfo/insight-users
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20120524/d4ecdf5a/attachment.htm>


More information about the Insight-users mailing list