Skip to content

Commit 2e6e9c1

Browse files
committed
Merge pull request opencv#18210 from VadimLevin:dev/vlevin/openjpeg-reduce-filesize
2 parents 721ab68 + bce5d36 commit 2e6e9c1

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

modules/imgcodecs/src/grfmt_jpeg2000_openjpeg.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,12 +327,14 @@ opj_cparameters setupEncoderParameters(const std::vector<int>& params)
327327
{
328328
opj_cparameters parameters;
329329
opj_set_default_encoder_parameters(&parameters);
330+
bool rate_is_specified = false;
330331
for (size_t i = 0; i < params.size(); i += 2)
331332
{
332333
switch (params[i])
333334
{
334335
case cv::IMWRITE_JPEG2000_COMPRESSION_X1000:
335336
parameters.tcp_rates[0] = 1000.f / std::min(std::max(params[i + 1], 1), 1000);
337+
rate_is_specified = true;
336338
break;
337339
default:
338340
CV_LOG_WARNING(NULL, "OpenJPEG2000(encoder): skip unsupported parameter: " << params[i]);
@@ -341,6 +343,10 @@ opj_cparameters setupEncoderParameters(const std::vector<int>& params)
341343
}
342344
parameters.tcp_numlayers = 1;
343345
parameters.cp_disto_alloc = 1;
346+
if (!rate_is_specified)
347+
{
348+
parameters.tcp_rates[0] = 4;
349+
}
344350
return parameters;
345351
}
346352

modules/imgcodecs/test/test_read_write.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,12 @@ TEST_P(Imgcodecs_Image, read_write_BGR)
228228
double psnrThreshold = 100;
229229
if (ext == "jpg")
230230
psnrThreshold = 32;
231-
#ifdef HAVE_JASPER
231+
#if defined(HAVE_JASPER)
232232
if (ext == "jp2")
233233
psnrThreshold = 95;
234+
#elif defined(HAVE_OPENJPEG)
235+
if (ext == "jp2")
236+
psnrThreshold = 35;
234237
#endif
235238

236239
Mat image = generateTestImageBGR();
@@ -254,9 +257,12 @@ TEST_P(Imgcodecs_Image, read_write_GRAYSCALE)
254257
double psnrThreshold = 100;
255258
if (ext == "jpg")
256259
psnrThreshold = 40;
257-
#ifdef HAVE_JASPER
260+
#if defined(HAVE_JASPER)
258261
if (ext == "jp2")
259262
psnrThreshold = 70;
263+
#elif defined(HAVE_OPENJPEG)
264+
if (ext == "jp2")
265+
psnrThreshold = 35;
260266
#endif
261267

262268
Mat image = generateTestImageGrayscale();

0 commit comments

Comments
 (0)