1
0
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:
Maksim Shabunin
2017-11-28 12:53:40 +03:00
parent 9665dde678
commit 7349b8f5ce
25 changed files with 184 additions and 135 deletions
+2 -2
View File
@@ -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);
}
+12 -9
View File
@@ -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 )
{
+6 -6
View File
@@ -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;
+18 -18
View File
@@ -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
{
}
+15 -13
View File
@@ -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;
+4 -4
View File
@@ -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
{
}
+18 -18
View File
@@ -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;
}