Commit a7ede6c8 authored by Thomas Feuvrier's avatar Thomas Feuvrier

Initialisation des classes JPEG2000 (ImageIO et Factory) et création de deux...

Initialisation des classes JPEG2000 (ImageIO et Factory) et création de deux TU CanRead et CanWrite (en test Failed).
parent 599b07dc
......@@ -114,7 +114,7 @@ IF(OTB_USE_VISU_GUI)
# MESSAGE("FLUID_COMMAND -> ${FLUID_COMMAND}")
# MESSAGE("FLTK_BINARY_DIR -> ${FLTK_BINARY_DIR}")
# MESSAGE("FLTK_USE_FILE -> ${FLTK_USE_FILE}")
# MESSAGE("FLTK_INCLUDE_DIRS -> ${FLTK_INCLUDE_DIRS}")
MESSAGE("FLTK_INCLUDE_DIRS -> ${FLTK_INCLUDE_DIRS}")
# MESSAGE("FLTK_LIBRARY_DIRS -> ${FLTK_LIBRARY_DIRS}")
# MESSAGE("FLTK_LIBRARIES -> ${FLTK_LIBRARIES}")
# MESSAGE("FLTK_DIR -> ${FLTK_DIR}")
......@@ -196,6 +196,88 @@ ENDIF(OTB_USE_VISU_GUI)
#MESSAGE("FLTK_EXECUTABLE_DIRS -> ${FLTK_EXECUTABLE_DIRS}")
#MESSAGE("OTB_VISU_GUI_LIBRARIES -> ${OTB_VISU_GUI_LIBRARIES}")
#-------------------------------
# Librairie ITK
#-------------------------------
OPTION(OTB_USE_EXTERNAL_ITK "Use an outside build of ITK." OFF)
IF(OTB_USE_EXTERNAL_ITK)
FIND_PACKAGE(ITK)
IF(ITK_FOUND)
INCLUDE(${ITK_USE_FILE})
ELSE(ITK_FOUND)
MESSAGE(FATAL_ERROR
"Cannot build OTB project without ITK. Please set ITK_DIR or set OTB_USE_EXTERNAL_ITK OFF to use INTERNAL ITK set on OTB/Utilities repository.")
ENDIF(ITK_FOUND)
ENDIF(OTB_USE_EXTERNAL_ITK)
#SET(CURL_INCLUDE_DIR )
#MARK_AS_ADVANCED(CURL_INCLUDE_DIRS)
#SET(CURL_LIBRARY )
#MARK_AS_ADVANCED(CURL_LIBRARY_DIRS)
#-------------------------------
# CURL Library
#-------------------------------
OPTION(OTB_USE_CURL "Use curl library." OFF)
MARK_AS_ADVANCED(OTB_USE_CURL)
IF(OTB_USE_CURL)
# INCLUDE(CheckIncludeFiles)
# INCLUDE(CheckLibraryExists)
# CHECK_INCLUDE_FILES("curl/curl.h" OTB_HAVE_CURL_HEADER)
# CHECK_LIBRARY_EXISTS("curl" "curl_easy_init" "" OTB_HAVE_CURL_LIBRARY)
# IF( NOT OTB_HAVE_CURL_HEADER )
# MESSAGE("Cannot find CURL include directory. Please set CURL_INCLUDE_DIRS or SET OTB_USE_CURL OFF.")
# ENDIF( NOT OTB_HAVE_CURL_HEADER)
# IF( NOT OTB_HAVE_CURL_LIBRARY )
# MESSAGE("Cannot find CURL include directory. Please set CURL_LIBRARY_DIRS or SET OTB_USE_CURL OFF.")
# ENDIF( NOT OTB_HAVE_CURL_LIBRARY)
FIND_PATH(CURL_INCLUDE_DIR curl/curl.h PATHS)
MARK_AS_ADVANCED(CURL_INCLUDE_DIR)
IF (NOT CURL_INCLUDE_DIR)
MESSAGE(FATAL_ERROR
"Cannot find CURL include directory. Please set CURL_INCLUDE_DIR or SET OTB_USE_CURL OFF.")
ENDIF (NOT CURL_INCLUDE_DIR)
FIND_LIBRARY(CURL_LIBRARY curl )
MARK_AS_ADVANCED(CURL_LIBRARY)
IF (NOT CURL_LIBRARY)
MESSAGE(FATAL_ERROR
"Cannot find CURL library. Please set CURL_LIBRARY or SET OTB_USE_CURL OFF.")
ENDIF (NOT CURL_LIBRARY)
# Add compiler option
ADD_DEFINITIONS(-DOTB_USE_CURL)
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR})
ENDIF(OTB_USE_CURL)
#-------------------------------
# GDAL Library
#-------------------------------
#FIND_LIBRARY(GDAL_LIBRARY_DIRS gdal PATHS $ENV{GDAL_LIBRARY_DIRS} )
FIND_PATH(GDAL_LIBRARY_DIRS gdal PATHS $ENV{GDAL_LIBRARY_DIRS} )
FIND_PATH(GDAL_INCLUDE_DIRS gdal.h $ENV{GDAL_INCLUDE_DIRS} /usr/include/gdal)
IF (NOT GDAL_LIBRARY_DIRS)
MESSAGE(FATAL_ERROR
"Cannot find GDAL library directory. Please set GDAL_LIBRARY_DIRS.")
ENDIF (NOT GDAL_LIBRARY_DIRS)
IF (NOT GDAL_INCLUDE_DIRS)
MESSAGE(FATAL_ERROR
"Cannot find GDAL include directory. Please set GDAL_INCLUDE_DIRS.")
ENDIF (NOT GDAL_INCLUDE_DIRS)
INCLUDE_DIRECTORIES(${GDAL_INCLUDE_DIRS})
LINK_DIRECTORIES( ${GDAL_LIBRARY_DIRS} )
#-------------------------------
# ITK Library
......
......@@ -28,6 +28,7 @@
#include "otbGDALImageIOFactory.h"
#include "otbLUMImageIOFactory.h"
#include "otbBSQImageIOFactory.h"
#include "otbJPEG2000ImageIOFactory.h"
#ifdef OTB_USE_CURL
#include "otbNetworkedQuadTreeImageIOFactory.h"
#endif
......@@ -69,6 +70,9 @@ ImageIOFactory::RegisterBuiltInFactories()
// GDAL : New format for OTB
itk::ObjectFactoryBase::RegisterFactory( GDALImageIOFactory::New() );
// JPEG2000 : New format for OTB
itk::ObjectFactoryBase::RegisterFactory( JPEG2000ImageIOFactory::New() );
#ifdef OTB_USE_CURL
// NetworkedQuadTree : New format for OTB
itk::ObjectFactoryBase::RegisterFactory( NetworkedQuadTreeImageIOFactory::New() );
......
/*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#include "otbJPEG2000ImageIO.h"
#include "itkExceptionObject.h"
#include "otbMacro.h"
#include "otbSystem.h"
namespace otb
{
JPEG2000ImageIO::JPEG2000ImageIO()
{
// By default set number of dimensions to two.
this->SetNumberOfDimensions(2);
m_PixelType = SCALAR;
m_ComponentType = UCHAR;
// Set default spacing to one
m_Spacing[0] = 1.0;
m_Spacing[1] = 1.0;
// Set default origin to zero
m_Origin[0] = 0.0;
m_Origin[1] = 0.0;
}
JPEG2000ImageIO::~JPEG2000ImageIO()
{
}
bool JPEG2000ImageIO::CanReadFile( const char* filename )
{
return false;
}
// Used to print information about this object
void JPEG2000ImageIO::PrintSelf(std::ostream& os, itk::Indent indent) const
{
Superclass::PrintSelf(os, indent);
}
// Read a 3D image (or event more bands)... not implemented yet
void JPEG2000ImageIO::ReadVolume(void*)
{
}
// Read image
void JPEG2000ImageIO::Read(void* buffer)
{
unsigned long step = this->GetNumberOfComponents();
char * p = static_cast<char *>(buffer);
int lNbLignes = this->GetIORegion().GetSize()[1];
int lNbColonnes = this->GetIORegion().GetSize()[0];
int lPremiereLigne = this->GetIORegion().GetIndex()[1] ; // [1... ]
int lPremiereColonne = this->GetIORegion().GetIndex()[0] ; // [1... ]
otbMsgDevMacro( <<" JPEG2000ImageIO::Read() ");
otbMsgDevMacro( <<" Dimensions de l'image : "<<m_Dimensions[0]<<","<<m_Dimensions[1]);
otbMsgDevMacro( <<" Region lue (IORegion) : "<<this->GetIORegion());
otbMsgDevMacro( <<" Nb Of Components : "<<this->GetNumberOfComponents());
std::streamoff headerLength(0);
std::streamoff numberOfBytesPerLines = static_cast<std::streamoff>(this->GetComponentSize() * m_Dimensions[0]);
std::streamoff offset;
std::streamsize numberOfBytesToBeRead = this->GetComponentSize() * lNbColonnes;
std::streamsize numberOfBytesRead;
unsigned long cpt = 0;
// Update the step variable
step = step * (unsigned long)(this->GetComponentSize());
char * value = new char[numberOfBytesToBeRead];
if(value==NULL)
{
itkExceptionMacro(<<"Memory bad alloc");
return;
}
delete [] value;
}
void JPEG2000ImageIO::ReadImageInformation()
{
otbMsgDebugMacro( <<"Driver to read: JPEG2000");
otbMsgDebugMacro( <<" Read file : "<< m_FileName);
otbMsgDebugMacro( <<" Size : "<<m_Dimensions[0]<<","<<m_Dimensions[1]);
otbMsgDebugMacro( <<" ComponentType : "<<this->GetComponentType() );
otbMsgDebugMacro( <<" NumberOfComponents : "<<this->GetNumberOfComponents());
otbMsgDebugMacro( <<" ComponentSize : "<<this->GetComponentSize());
otbMsgDebugMacro( <<" GetPixelSize : "<<this->GetPixelSize());
}
bool JPEG2000ImageIO::CanWriteFile( const char* filename )
{
return false;
#if 0
std::string lFileName(filename);
if( System::IsADirName(lFileName) == true )
{
return false;
}
const std::string Extension = System::GetExtension(filename);
if( (Extension == "j2k") || (Extension == "J2K") || (Extension == "jp2") || (Extension == "JP2"))
{
return true;
}
else
{
return false;
}
#endif
}
void JPEG2000ImageIO::Write(const void* buffer)
{
}
void JPEG2000ImageIO::WriteImageInformation()
{
if ( m_FileName == "" )
{
itkExceptionMacro(<<"A FileName must be specified.");
}
if( CanWriteFile(m_FileName.c_str()) == false)
{
itkExceptionMacro(<< "The file "<<m_FileName.c_str()<<" is not defined as a JPEG2000 file");
}
otbMsgDebugMacro( <<"Driver to write: JPEG2000");
otbMsgDebugMacro( <<" Write file : "<< m_FileName);
otbMsgDebugMacro( <<" Size : "<<m_Dimensions[0]<<","<<m_Dimensions[1]);
otbMsgDebugMacro( <<" ComponentType : "<<this->GetComponentType() );
otbMsgDebugMacro( <<" NumberOfComponents : "<<this->GetNumberOfComponents());
otbMsgDebugMacro( <<" ComponentSize : "<<this->GetComponentSize());
otbMsgDebugMacro( <<" GetPixelSize : "<<this->GetPixelSize());
}
} // end namespace otb
/*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __otbJPEG2000ImageIO_h
#define __otbJPEG2000ImageIO_h
#include "itkImageIOBase.h"
namespace otb
{
/** \class JPEG2000ImageIO
*
* \brief ImageIO object for reading and writing JPEG2000 format images
*
* The streaming (read and write) is implemented.
*
* \ingroup IOFilters
*
*/
class ITK_EXPORT JPEG2000ImageIO : public itk::ImageIOBase
{
public:
/** Standard class typedefs. */
typedef JPEG2000ImageIO Self;
typedef itk::ImageIOBase Superclass;
typedef itk::SmartPointer<Self> Pointer;
/** Method for creation through the object factory. */
itkNewMacro(Self);
/** Run-time type information (and related methods). */
itkTypeMacro(JPEG2000ImageIO, itk::ImageIOBase);
/*-------- This part of the interface deals with reading data. ------ */
/** Determine the file type. Returns true if this ImageIO can read the
* file specified. */
virtual bool CanReadFile(const char*);
/** Determine the file type. Returns true if the ImageIO can stream read the specified file */
virtual bool CanStreamRead(){ return true; };
/** Set the spacing and dimention information for the set filename. */
virtual void ReadImageInformation();
/** Reads the data from disk into the memory buffer provided. */
virtual void Read(void* buffer);
/** Reads 3D data from multiple files assuming one slice per file. */
virtual void ReadVolume(void* buffer);
/*-------- This part of the interfaces deals with writing data. ----- */
/** Determine the file type. Returns true if this ImageIO can read the
* file specified. */
virtual bool CanWriteFile(const char*);
/** Determine the file type. Returns true if the ImageIO can stream write the specified file */
virtual bool CanStreamWrite() { return true; };
/** Writes the spacing and dimentions of the image.
* Assumes SetFileName has been called with a valid file name. */
virtual void WriteImageInformation();
/** Writes the data to disk from the memory buffer provided. Make sure
* that the IORegion has been set properly. */
virtual void Write(const void* buffer);
protected:
/** Construtor.*/
JPEG2000ImageIO();
/** Destructor.*/
~JPEG2000ImageIO();
void PrintSelf(std::ostream& os, itk::Indent indent) const;
private:
JPEG2000ImageIO(const Self&); //purposely not implemented
void operator=(const Self&); //purposely not implemented
};
} // end namespace otb
#endif // __otbJPEG2000ImageIO_h
/*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#include "otbJPEG2000ImageIOFactory.h"
#include "itkCreateObjectFunction.h"
#include "otbJPEG2000ImageIO.h"
#include "itkVersion.h"
namespace otb
{
JPEG2000ImageIOFactory::JPEG2000ImageIOFactory()
{
this->RegisterOverride("itkImageIOBase",
"otbJPEG2000ImageIO",
"JPEG2000 Image IO",
1,
itk::CreateObjectFunction<JPEG2000ImageIO>::New());
}
JPEG2000ImageIOFactory::~JPEG2000ImageIOFactory()
{
}
const char*
JPEG2000ImageIOFactory::GetITKSourceVersion(void) const
{
return ITK_SOURCE_VERSION;
}
const char*
JPEG2000ImageIOFactory::GetDescription() const
{
return "JPEG2000 ImageIO Factory, allows the loading of JPEG2000 images into insight";
}
} // end namespace otb
/*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __otbJPEG2000ImageIOFactory_h
#define __otbJPEG2000ImageIOFactory_h
#include "itkObjectFactoryBase.h"
#include "itkImageIOBase.h"
namespace otb
{
/** \class JPEG2000ImageIOFactory
* \brief Create instances of JPEG2000ImageIO objects using an object factory.
*/
class ITK_EXPORT JPEG2000ImageIOFactory : public itk::ObjectFactoryBase
{
public:
/** Standard class typedefs. */
typedef JPEG2000ImageIOFactory Self;
typedef itk::ObjectFactoryBase Superclass;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
/** Class methods used to interface with the registered factories. */
virtual const char* GetITKSourceVersion(void) const;
virtual const char* GetDescription(void) const;
/** Method for class instantiation. */
itkFactorylessNewMacro(Self);
/** Run-time type information (and related methods). */
itkTypeMacro(JPEG2000ImageIOFactory, itk::ObjectFactoryBase);
/** Register one factory of this type */
static void RegisterOneFactory(void)
{
JPEG2000ImageIOFactory::Pointer JPEG2000Factory = JPEG2000ImageIOFactory::New();
itk::ObjectFactoryBase::RegisterFactory(JPEG2000Factory);
}
protected:
JPEG2000ImageIOFactory();
~JPEG2000ImageIOFactory();
private:
JPEG2000ImageIOFactory(const Self&); //purposely not implemented
void operator=(const Self&); //purposely not implemented
};
} // end namespace otb
#endif
......@@ -30,6 +30,7 @@ SET(IO_TESTS9 ${CXX_TEST_PATH}/otbIOTests9)
SET(IO_TESTS10 ${CXX_TEST_PATH}/otbIOTests10)
SET(IO_TESTS11 ${CXX_TEST_PATH}/otbIOTests11)
SET(IO_TESTS12 ${CXX_TEST_PATH}/otbIOTests12)
SET(IO_TESTS13 ${CXX_TEST_PATH}/otbIOTests13)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ COMMON_TESTS3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......@@ -1211,23 +1212,22 @@ ADD_TEST(ioTvossimElevManagerTest ${IO_TESTS12}
500
)
#----------------------------------------------------------------------------------
# Exemples de tests sur les grosses images
# Tests non lanc�s pour raison taille des fichiers produits
# ADD_TEST(ioTvStreamingIFWriterPARIS_SPOT5THR_WithoutStreaming ${IO_TESTS12}
# otbStreamingImageFileWriterTest
# ${IMAGEDATA}/PARIS/SPOT5/THR
# ${TEMP}/ioStreamingImageFileWriterTestCAI_ParisSpot5THR_WithoutStreaming.hd
# 0 # Test sans streaming
# )
# ADD_TEST(ioTvStreamingIFWriterPARIS_SPOT5THR_WithStreaming_1000 ${IO_TESTS12}
# otbStreamingImageFileWriterTest
# ${IMAGEDATA}/PARIS/SPOT5/THR
# ${TEMP}/ioStreamingImageFileWriterTestCAI_ParisSpot5THR_WithStreaming_1000.hd
# 1 # Test sans streaming
# 1000 # NbDivisionsStreaming
# )
#----------------------------------------------------------------------------------
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ otbIOTESTS13 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# --- JPEG2000 can read ---
ADD_TEST(ioTuJPEG2000ImageIOCanRead ${IO_TESTS13}
otbJPEG2000ImageIOTestCanRead
${INPUTDATA}/toto.j2k
)
# --- JPEG2000 can write ---
ADD_TEST(ioTuJPEG2000ImageIOCanWrite ${IO_TESTS13}
otbJPEG2000ImageIOTestCanWrite
${INPUTDATA}/toto.j2k
)
......@@ -1314,6 +1314,11 @@ otbImageGeometryHandlerNew.cxx
otbOssimElevManagerTest.cxx
)
SET(BasicIO_SRCS13
otbJPEG2000ImageIOTestCanRead.cxx
otbJPEG2000ImageIOTestCanWrite.cxx
)
INCLUDE_DIRECTORIES("${OTBTesting_BINARY_DIR}")
ADD_EXECUTABLE(otbIOTests1 otbIOTests1.cxx ${BasicIO_SRCS1})
......@@ -1352,6 +1357,9 @@ TARGET_LINK_LIBRARIES(otbIOTests11 OTBIO OTBCommon gdal ITKIO ITKCommon dxf)
ADD_EXECUTABLE(otbIOTests12 otbIOTests12.cxx ${BasicIO_SRCS12})
TARGET_LINK_LIBRARIES(otbIOTests12 OTBIO OTBCommon gdal ITKIO ITKCommon dxf)
ADD_EXECUTABLE(otbIOTests13 otbIOTests13.cxx ${BasicIO_SRCS13})
TARGET_LINK_LIBRARIES(otbIOTests13 OTBIO OTBCommon gdal ITKIO ITKCommon dxf)
ENDIF( NOT OTB_DISABLE_CXX_TESTING )
......
/*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
// this file defines the otbCommonTest for the test driver
// and all it expects is that you have a function called RegisterTests
#if defined(_MSC_VER)
#pragma warning ( disable : 4786 )
#endif
#include <iostream>
#include "otbTestMain.h"
void RegisterTests()
{
REGISTER_TEST(otbJPEG2000ImageIOTestCanRead);
REGISTER_TEST(otbJPEG2000ImageIOTestCanWrite);
}
/*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#if defined(_MSC_VER)
#pragma warning ( disable : 4786 )
#endif
#include "otbJPEG2000ImageIO.h"
#include "itkExceptionObject.h"
#include <iostream>
int otbJPEG2000ImageIOTestCanRead(int argc, char* argv[])
{
otb::JPEG2000ImageIO::Pointer lJPEG2000ImageIO = otb::JPEG2000ImageIO::New();
bool lCanRead = lJPEG2000ImageIO->CanReadFile(argv[1]);
if ( lCanRead == false)
{
std::cerr << "Erreur otb::JPEG2000ImageIO : impossible to open the image file JPEG2000 "<<argv[1]<<"."<<std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
/*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#if defined(_MSC_VER)
#pragma warning ( disable : 4786 )
#endif
#include "otbJPEG2000ImageIO.h"
#include "itkExceptionObject.h"
#include <iostream>
int otbJPEG2000ImageIOTestCanWrite(int argc, char* argv[])
{
otb::JPEG2000ImageIO::Pointer lJPEG2000ImageIO = otb::JPEG2000ImageIO::New();
bool lCanWrite = lJPEG2000ImageIO->CanWriteFile(argv[1]);
if ( lCanWrite == false)
{
std::cerr << "Erreur otb::JPEG2000ImageIO : impossible to create the image file JPEG2000 "<<argv[1]<<"."<<std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment