From 6da62f56facc4bbbd7bc3dfdccbe90d9853e411e Mon Sep 17 00:00:00 2001 From: RAJ NATARAJAN Date: Fri, 15 Sep 2017 23:36:58 -0600 Subject: [PATCH] Add some useful input assertions to PSNR function Input arrays must be depth CV_8U and of identical size. --- modules/core/src/stat.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/core/src/stat.cpp b/modules/core/src/stat.cpp index a978c90fd2..aeb968a13f 100644 --- a/modules/core/src/stat.cpp +++ b/modules/core/src/stat.cpp @@ -4150,7 +4150,10 @@ double cv::PSNR(InputArray _src1, InputArray _src2) { CV_INSTRUMENT_REGION() - CV_Assert( _src1.depth() == CV_8U ); + //Input arrays must have depth CV_8U and be of identical size + CV_Assert( _src1.depth() == CV_8U && _src2.depth() == CV_8U ); + CV_Assert( _src1.rows() == _src2.rows() && _src1.cols() == _src2.cols() && _src1.dims() == _src2.dims() ); + double diff = std::sqrt(norm(_src1, _src2, NORM_L2SQR)/(_src1.total()*_src1.channels())); return 20*log10(255./(diff+DBL_EPSILON)); }