mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 15:53:03 +04:00
Build for embedded systems
This commit is contained in:
@@ -98,7 +98,7 @@ void RBaseStream::readBlock()
|
||||
{
|
||||
if( m_block_pos == 0 && m_current < m_end )
|
||||
return;
|
||||
throw RBS_THROW_EOS;
|
||||
CV_THROW (RBS_THROW_EOS);
|
||||
}
|
||||
|
||||
fseek( m_file, m_block_pos, SEEK_SET );
|
||||
@@ -107,7 +107,7 @@ void RBaseStream::readBlock()
|
||||
m_current = m_start;
|
||||
|
||||
if( readed == 0 || m_current >= m_end )
|
||||
throw RBS_THROW_EOS;
|
||||
CV_THROW (RBS_THROW_EOS);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -41,6 +41,8 @@
|
||||
//M*/
|
||||
|
||||
#include "exif.hpp"
|
||||
#include "opencv2/core/cvdef.h"
|
||||
#include "opencv2/core/base.hpp"
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -79,14 +81,15 @@ ExifReader::~ExifReader()
|
||||
*/
|
||||
bool ExifReader::parse()
|
||||
{
|
||||
try {
|
||||
CV_TRY {
|
||||
m_exif = getExif();
|
||||
if( !m_exif.empty() )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
} catch (ExifParsingError&) {
|
||||
} CV_CATCH (ExifParsingError, e) {
|
||||
CV_UNUSED(e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -150,11 +153,11 @@ std::map<int, ExifEntry_t > ExifReader::getExif()
|
||||
case COM:
|
||||
bytesToSkip = getFieldSize();
|
||||
if (bytesToSkip < markerSize) {
|
||||
throw ExifParsingError();
|
||||
CV_THROW (ExifParsingError());
|
||||
}
|
||||
m_stream.seekg( static_cast<long>( bytesToSkip - markerSize ), m_stream.cur );
|
||||
if ( m_stream.fail() ) {
|
||||
throw ExifParsingError();
|
||||
CV_THROW (ExifParsingError());
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -165,12 +168,12 @@ std::map<int, ExifEntry_t > ExifReader::getExif()
|
||||
case APP1: //actual Exif Marker
|
||||
exifSize = getFieldSize();
|
||||
if (exifSize <= offsetToTiffHeader) {
|
||||
throw ExifParsingError();
|
||||
CV_THROW (ExifParsingError());
|
||||
}
|
||||
m_data.resize( exifSize - offsetToTiffHeader );
|
||||
m_stream.seekg( static_cast<long>( offsetToTiffHeader ), m_stream.cur );
|
||||
if ( m_stream.fail() ) {
|
||||
throw ExifParsingError();
|
||||
CV_THROW (ExifParsingError());
|
||||
}
|
||||
m_stream.read( reinterpret_cast<char*>(&m_data[0]), exifSize - offsetToTiffHeader );
|
||||
count = m_stream.gcount();
|
||||
@@ -415,7 +418,7 @@ std::string ExifReader::getString(const size_t offset) const
|
||||
dataOffset = getU32( offset + 8 );
|
||||
}
|
||||
if (dataOffset > m_data.size() || dataOffset + size > m_data.size()) {
|
||||
throw ExifParsingError();
|
||||
CV_THROW (ExifParsingError());
|
||||
}
|
||||
std::vector<uint8_t>::const_iterator it = m_data.begin() + dataOffset;
|
||||
std::string result( it, it + size ); //copy vector content into result
|
||||
@@ -432,7 +435,7 @@ std::string ExifReader::getString(const size_t offset) const
|
||||
uint16_t ExifReader::getU16(const size_t offset) const
|
||||
{
|
||||
if (offset + 1 >= m_data.size())
|
||||
throw ExifParsingError();
|
||||
CV_THROW (ExifParsingError());
|
||||
|
||||
if( m_format == INTEL )
|
||||
{
|
||||
@@ -450,7 +453,7 @@ uint16_t ExifReader::getU16(const size_t offset) const
|
||||
uint32_t ExifReader::getU32(const size_t offset) const
|
||||
{
|
||||
if (offset + 3 >= m_data.size())
|
||||
throw ExifParsingError();
|
||||
CV_THROW (ExifParsingError());
|
||||
|
||||
if( m_format == INTEL )
|
||||
{
|
||||
|
||||
@@ -89,7 +89,7 @@ bool BmpDecoder::readHeader()
|
||||
else if( !m_strm.open( m_filename ))
|
||||
return false;
|
||||
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
m_strm.skip( 10 );
|
||||
m_offset = m_strm.getDWord();
|
||||
@@ -172,9 +172,9 @@ bool BmpDecoder::readHeader()
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(...)
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
throw;
|
||||
CV_RETHROW();
|
||||
}
|
||||
// in 32 bit case alpha channel is used - so require CV_8UC4 type
|
||||
m_type = iscolor ? (m_bpp == 32 ? CV_8UC4 : CV_8UC3 ) : CV_8UC1;
|
||||
@@ -224,7 +224,7 @@ bool BmpDecoder::readData( Mat& img )
|
||||
}
|
||||
uchar *src = _src, *bgr = _bgr;
|
||||
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
m_strm.setPos( m_offset );
|
||||
|
||||
@@ -492,9 +492,9 @@ decode_rle8_bad: ;
|
||||
CV_ErrorNoReturn(cv::Error::StsError, "Invalid/unsupported mode");
|
||||
}
|
||||
}
|
||||
catch(...)
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
throw;
|
||||
CV_RETHROW();
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -374,25 +374,25 @@ bool PAMDecoder::readHeader()
|
||||
}
|
||||
else if( !m_strm.open( m_filename ))
|
||||
return false;
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
byte = m_strm.getByte();
|
||||
if( byte != 'P' )
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
|
||||
byte = m_strm.getByte();
|
||||
if (byte != '7')
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
|
||||
byte = m_strm.getByte();
|
||||
if (byte != '\n' && byte != '\r')
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
|
||||
uint i;
|
||||
memset (&flds, 0x00, sizeof (struct parsed_fields));
|
||||
do {
|
||||
if (!ReadPAMHeaderLine(m_strm, fieldtype, value))
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
switch (fieldtype) {
|
||||
case PAM_HEADER_NONE:
|
||||
case PAM_HEADER_COMMENT:
|
||||
@@ -402,32 +402,32 @@ bool PAMDecoder::readHeader()
|
||||
break;
|
||||
case PAM_HEADER_HEIGHT:
|
||||
if (flds.height)
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
if (!ParseNumber (value, &m_height))
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
flds.height = true;
|
||||
break;
|
||||
case PAM_HEADER_WIDTH:
|
||||
if (flds.width)
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
if (!ParseNumber (value, &m_width))
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
flds.width = true;
|
||||
break;
|
||||
case PAM_HEADER_DEPTH:
|
||||
if (flds.depth)
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
if (!ParseNumber (value, &m_channels))
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
flds.depth = true;
|
||||
break;
|
||||
case PAM_HEADER_MAXVAL:
|
||||
if (flds.maxval)
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
if (!ParseNumber (value, &m_maxval))
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
if ( m_maxval > 65535 )
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
if ( m_maxval > 255 ) {
|
||||
m_sampledepth = CV_16U;
|
||||
}
|
||||
@@ -446,7 +446,7 @@ bool PAMDecoder::readHeader()
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW( RBS_BAD_HEADER );
|
||||
}
|
||||
} while (fieldtype != PAM_HEADER_ENDHDR);
|
||||
|
||||
@@ -464,7 +464,7 @@ bool PAMDecoder::readHeader()
|
||||
|
||||
return true;
|
||||
}
|
||||
} catch(...)
|
||||
} CV_CATCH_ALL
|
||||
{
|
||||
}
|
||||
|
||||
@@ -511,7 +511,7 @@ bool PAMDecoder::readData( Mat& img )
|
||||
layout.graychan = 0;
|
||||
}
|
||||
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
m_strm.setPos( m_offset );
|
||||
|
||||
@@ -612,7 +612,7 @@ bool PAMDecoder::readData( Mat& img )
|
||||
}
|
||||
|
||||
res = true;
|
||||
} catch(...)
|
||||
} CV_CATCH_ALL
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -148,11 +148,11 @@ bool PxMDecoder::readHeader()
|
||||
else if( !m_strm.open( m_filename ))
|
||||
return false;
|
||||
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
int code = m_strm.getByte();
|
||||
if( code != 'P' )
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW (RBS_BAD_HEADER);
|
||||
|
||||
code = m_strm.getByte();
|
||||
switch( code )
|
||||
@@ -160,7 +160,7 @@ bool PxMDecoder::readHeader()
|
||||
case '1': case '4': m_bpp = 1; break;
|
||||
case '2': case '5': m_bpp = 8; break;
|
||||
case '3': case '6': m_bpp = 24; break;
|
||||
default: throw RBS_BAD_HEADER;
|
||||
default: CV_THROW (RBS_BAD_HEADER);
|
||||
}
|
||||
|
||||
m_binary = code >= '4';
|
||||
@@ -171,7 +171,7 @@ bool PxMDecoder::readHeader()
|
||||
|
||||
m_maxval = m_bpp == 1 ? 1 : ReadNumber(m_strm);
|
||||
if( m_maxval > 65535 )
|
||||
throw RBS_BAD_HEADER;
|
||||
CV_THROW (RBS_BAD_HEADER);
|
||||
|
||||
//if( m_maxval > 255 ) m_binary = false; nonsense
|
||||
if( m_maxval > 255 )
|
||||
@@ -183,14 +183,15 @@ bool PxMDecoder::readHeader()
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
catch (const cv::Exception&)
|
||||
CV_CATCH (cv::Exception, e)
|
||||
{
|
||||
throw;
|
||||
CV_UNUSED(e);
|
||||
CV_RETHROW();
|
||||
}
|
||||
catch (...)
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
std::cerr << "PXM::readHeader(): unknown C++ exception" << std::endl << std::flush;
|
||||
throw;
|
||||
CV_RETHROW();
|
||||
}
|
||||
|
||||
if( !result )
|
||||
@@ -230,7 +231,7 @@ bool PxMDecoder::readData( Mat& img )
|
||||
FillGrayPalette( palette, m_bpp==1 ? 1 : 8 , m_bpp == 1 );
|
||||
}
|
||||
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
m_strm.setPos( m_offset );
|
||||
|
||||
@@ -356,14 +357,15 @@ bool PxMDecoder::readData( Mat& img )
|
||||
CV_ErrorNoReturn(Error::StsError, "m_bpp is not supported");
|
||||
}
|
||||
}
|
||||
catch (const cv::Exception&)
|
||||
CV_CATCH (cv::Exception, e)
|
||||
{
|
||||
throw;
|
||||
CV_UNUSED(e);
|
||||
CV_RETHROW();
|
||||
}
|
||||
catch (...)
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
std::cerr << "PXM::readData(): unknown exception" << std::endl << std::flush;
|
||||
throw;
|
||||
CV_RETHROW();
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -82,7 +82,7 @@ bool SunRasterDecoder::readHeader()
|
||||
|
||||
if( !m_strm.open( m_filename )) return false;
|
||||
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
m_strm.skip( 4 );
|
||||
m_width = m_strm.getDWord();
|
||||
@@ -142,7 +142,7 @@ bool SunRasterDecoder::readHeader()
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(...)
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ bool SunRasterDecoder::readData( Mat& img )
|
||||
if( !color && m_maptype == RMT_EQUAL_RGB )
|
||||
CvtPaletteToGray( m_palette, gray_palette, 1 << m_bpp );
|
||||
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
m_strm.setPos( m_offset );
|
||||
|
||||
@@ -374,7 +374,7 @@ bad_decoding_end:
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
catch( ... )
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -426,18 +426,18 @@ imread_( const String& filename, int flags, int hdrtype, Mat* mat=0 )
|
||||
/// set the filename in the driver
|
||||
decoder->setSource( filename );
|
||||
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
// read the header to make sure it succeeds
|
||||
if( !decoder->readHeader() )
|
||||
return 0;
|
||||
}
|
||||
catch (const cv::Exception& e)
|
||||
CV_CATCH (cv::Exception, e)
|
||||
{
|
||||
std::cerr << "imread_('" << filename << "'): can't read header: " << e.what() << std::endl << std::flush;
|
||||
return 0;
|
||||
}
|
||||
catch (...)
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
std::cerr << "imread_('" << filename << "'): can't read header: unknown exception" << std::endl << std::flush;
|
||||
return 0;
|
||||
@@ -482,16 +482,16 @@ imread_( const String& filename, int flags, int hdrtype, Mat* mat=0 )
|
||||
|
||||
// read the image data
|
||||
bool success = false;
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
if (decoder->readData(*data))
|
||||
success = true;
|
||||
}
|
||||
catch (const cv::Exception& e)
|
||||
CV_CATCH (cv::Exception, e)
|
||||
{
|
||||
std::cerr << "imread_('" << filename << "'): can't read data: " << e.what() << std::endl << std::flush;
|
||||
}
|
||||
catch (...)
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
std::cerr << "imread_('" << filename << "'): can't read data: unknown exception" << std::endl << std::flush;
|
||||
}
|
||||
@@ -548,18 +548,18 @@ imreadmulti_(const String& filename, int flags, std::vector<Mat>& mats)
|
||||
decoder->setSource(filename);
|
||||
|
||||
// read the header to make sure it succeeds
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
// read the header to make sure it succeeds
|
||||
if( !decoder->readHeader() )
|
||||
return 0;
|
||||
}
|
||||
catch (const cv::Exception& e)
|
||||
CV_CATCH (cv::Exception, e)
|
||||
{
|
||||
std::cerr << "imreadmulti_('" << filename << "'): can't read header: " << e.what() << std::endl << std::flush;
|
||||
return 0;
|
||||
}
|
||||
catch (...)
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
std::cerr << "imreadmulti_('" << filename << "'): can't read header: unknown exception" << std::endl << std::flush;
|
||||
return 0;
|
||||
@@ -587,16 +587,16 @@ imreadmulti_(const String& filename, int flags, std::vector<Mat>& mats)
|
||||
// read the image data
|
||||
Mat mat(size.height, size.width, type);
|
||||
bool success = false;
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
if (decoder->readData(mat))
|
||||
success = true;
|
||||
}
|
||||
catch (const cv::Exception& e)
|
||||
CV_CATCH (cv::Exception, e)
|
||||
{
|
||||
std::cerr << "imreadmulti_('" << filename << "'): can't read data: " << e.what() << std::endl << std::flush;
|
||||
}
|
||||
catch (...)
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
std::cerr << "imreadmulti_('" << filename << "'): can't read data: unknown exception" << std::endl << std::flush;
|
||||
}
|
||||
@@ -738,16 +738,16 @@ imdecode_( const Mat& buf, int flags, int hdrtype, Mat* mat=0 )
|
||||
}
|
||||
|
||||
bool success = false;
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
if (decoder->readHeader())
|
||||
success = true;
|
||||
}
|
||||
catch (const cv::Exception& e)
|
||||
CV_CATCH (cv::Exception, e)
|
||||
{
|
||||
std::cerr << "imdecode_('" << filename << "'): can't read header: " << e.what() << std::endl << std::flush;
|
||||
}
|
||||
catch (...)
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
std::cerr << "imdecode_('" << filename << "'): can't read header: unknown exception" << std::endl << std::flush;
|
||||
}
|
||||
@@ -800,16 +800,16 @@ imdecode_( const Mat& buf, int flags, int hdrtype, Mat* mat=0 )
|
||||
}
|
||||
|
||||
success = false;
|
||||
try
|
||||
CV_TRY
|
||||
{
|
||||
if (decoder->readData(*data))
|
||||
success = true;
|
||||
}
|
||||
catch (const cv::Exception& e)
|
||||
CV_CATCH (cv::Exception, e)
|
||||
{
|
||||
std::cerr << "imdecode_('" << filename << "'): can't read data: " << e.what() << std::endl << std::flush;
|
||||
}
|
||||
catch (...)
|
||||
CV_CATCH_ALL
|
||||
{
|
||||
std::cerr << "imdecode_('" << filename << "'): can't read data: unknown exception" << std::endl << std::flush;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user