From 79d4e865fe8032fb68a3b17d1383567eff9f6e16 Mon Sep 17 00:00:00 2001 From: nickjackolson Date: Sun, 14 Nov 2021 20:43:50 +0100 Subject: [PATCH 1/2] Add warning message to imread() Add a warning message using CV_LOG__WARNING(). This way api behaviour is preserved. Outputs are the same but user gets an extra warning in case fopen() fails to access image file for some reason. This would help new users and also debugging complex apps which use imread() Signed-off-by: nickjackolson --- modules/imgcodecs/src/loadsave.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/imgcodecs/src/loadsave.cpp b/modules/imgcodecs/src/loadsave.cpp index c8fcbea7ee..bd87c379ab 100644 --- a/modules/imgcodecs/src/loadsave.cpp +++ b/modules/imgcodecs/src/loadsave.cpp @@ -226,8 +226,10 @@ static ImageDecoder findDecoder( const String& filename ) { FILE* f= fopen( filename.c_str(), "rb" ); /// in the event of a failure, return an empty image decoder - if( !f ) + if( !f ) { + CV_LOG_WARNING(NULL, "imread_('" << filename << "'): can't open/read file: check file path/integrity"); return ImageDecoder(); + } // read the file signature String signature(maxlen, ' '); From b696928a5b73f27d3b3c4678cea8bc2e5fd845d7 Mon Sep 17 00:00:00 2001 From: nickjackolson Date: Wed, 17 Nov 2021 21:56:55 +0100 Subject: [PATCH 2/2] add !empty assertion in seamlessClone() issue #20617 addresses lack of warnings on seamlessClone() function when src is None. This commit adds source check using CV_Assert therefore debugging would be easier. Signed-off-by: nickjackolson --- modules/photo/src/seamless_cloning.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/photo/src/seamless_cloning.cpp b/modules/photo/src/seamless_cloning.cpp index d09203577b..d21a3f21fd 100644 --- a/modules/photo/src/seamless_cloning.cpp +++ b/modules/photo/src/seamless_cloning.cpp @@ -67,6 +67,7 @@ static Mat checkMask(InputArray _mask, Size size) void cv::seamlessClone(InputArray _src, InputArray _dst, InputArray _mask, Point p, OutputArray _blend, int flags) { CV_INSTRUMENT_REGION(); + CV_Assert(!_src.empty()); const Mat src = _src.getMat(); const Mat dest = _dst.getMat();