{
opj_cparameters parameters;
opj_set_default_encoder_parameters(¶meters);
+ bool rate_is_specified = false;
for (size_t i = 0; i < params.size(); i += 2)
{
switch (params[i])
{
case cv::IMWRITE_JPEG2000_COMPRESSION_X1000:
parameters.tcp_rates[0] = 1000.f / std::min(std::max(params[i + 1], 1), 1000);
+ rate_is_specified = true;
break;
default:
CV_LOG_WARNING(NULL, "OpenJPEG2000(encoder): skip unsupported parameter: " << params[i]);
}
parameters.tcp_numlayers = 1;
parameters.cp_disto_alloc = 1;
+ if (!rate_is_specified)
+ {
+ parameters.tcp_rates[0] = 4;
+ }
return parameters;
}
double psnrThreshold = 100;
if (ext == "jpg")
psnrThreshold = 32;
-#ifdef HAVE_JASPER
+#if defined(HAVE_JASPER)
if (ext == "jp2")
psnrThreshold = 95;
+#elif defined(HAVE_OPENJPEG)
+ if (ext == "jp2")
+ psnrThreshold = 35;
#endif
Mat image = generateTestImageBGR();
double psnrThreshold = 100;
if (ext == "jpg")
psnrThreshold = 40;
-#ifdef HAVE_JASPER
+#if defined(HAVE_JASPER)
if (ext == "jp2")
psnrThreshold = 70;
+#elif defined(HAVE_OPENJPEG)
+ if (ext == "jp2")
+ psnrThreshold = 35;
#endif
Mat image = generateTestImageGrayscale();