Updated warning options for GCC; fixed new warnings.
This commit is contained in:
@@ -380,7 +380,6 @@ int my_jpeg_load_dht (struct jpeg_decompress_struct *info, unsigned char *dht,
|
||||
bool JpegDecoder::readData( Mat& img )
|
||||
{
|
||||
bool result = false;
|
||||
uchar* data = img.data;
|
||||
int step = (int)img.step;
|
||||
bool color = img.channels() > 1;
|
||||
JpegState* state = (JpegState*)m_state;
|
||||
@@ -439,6 +438,7 @@ bool JpegDecoder::readData( Mat& img )
|
||||
buffer = (*cinfo->mem->alloc_sarray)((j_common_ptr)cinfo,
|
||||
JPOOL_IMAGE, m_width*4, 1 );
|
||||
|
||||
uchar* data = img.data;
|
||||
for( ; m_height--; data += step )
|
||||
{
|
||||
jpeg_read_scanlines( cinfo, buffer, 1 );
|
||||
@@ -533,19 +533,15 @@ ImageEncoder JpegEncoder::newEncoder() const
|
||||
|
||||
bool JpegEncoder::write( const Mat& img, const vector<int>& params )
|
||||
{
|
||||
int quality = 95;
|
||||
|
||||
for( size_t i = 0; i < params.size(); i += 2 )
|
||||
struct fileWrapper
|
||||
{
|
||||
if( params[i] == CV_IMWRITE_JPEG_QUALITY )
|
||||
{
|
||||
quality = params[i+1];
|
||||
quality = MIN(MAX(quality, 0), 100);
|
||||
}
|
||||
}
|
||||
FILE* f;
|
||||
|
||||
fileWrapper() : f(0) {}
|
||||
~fileWrapper() { if(f) fclose(f); }
|
||||
};
|
||||
bool result = false;
|
||||
FILE* f = 0;
|
||||
fileWrapper fw;
|
||||
int _channels = img.channels();
|
||||
int channels = _channels > 1 ? 3 : 1;
|
||||
int width = img.cols, height = img.rows;
|
||||
@@ -564,10 +560,10 @@ bool JpegEncoder::write( const Mat& img, const vector<int>& params )
|
||||
|
||||
if( !m_buf )
|
||||
{
|
||||
f = fopen( m_filename.c_str(), "wb" );
|
||||
if( !f )
|
||||
fw.f = fopen( m_filename.c_str(), "wb" );
|
||||
if( !fw.f )
|
||||
goto _exit_;
|
||||
jpeg_stdio_dest( &cinfo, f );
|
||||
jpeg_stdio_dest( &cinfo, fw.f );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -587,6 +583,17 @@ bool JpegEncoder::write( const Mat& img, const vector<int>& params )
|
||||
cinfo.input_components = channels;
|
||||
cinfo.in_color_space = channels > 1 ? JCS_RGB : JCS_GRAYSCALE;
|
||||
|
||||
int quality = 95;
|
||||
|
||||
for( size_t i = 0; i < params.size(); i += 2 )
|
||||
{
|
||||
if( params[i] == CV_IMWRITE_JPEG_QUALITY )
|
||||
{
|
||||
quality = params[i+1];
|
||||
quality = MIN(MAX(quality, 0), 100);
|
||||
}
|
||||
}
|
||||
|
||||
jpeg_set_defaults( &cinfo );
|
||||
jpeg_set_quality( &cinfo, quality,
|
||||
TRUE /* limit to baseline-JPEG values */ );
|
||||
@@ -619,7 +626,6 @@ bool JpegEncoder::write( const Mat& img, const vector<int>& params )
|
||||
}
|
||||
|
||||
_exit_:
|
||||
if(f) fclose(f);
|
||||
jpeg_destroy_compress( &cinfo );
|
||||
|
||||
return result;
|
||||
|
Reference in New Issue
Block a user