diff --git a/modules/imgcodecs/src/loadsave.cpp b/modules/imgcodecs/src/loadsave.cpp index 55008aaf57..ddd5fcf6fa 100644 --- a/modules/imgcodecs/src/loadsave.cpp +++ b/modules/imgcodecs/src/loadsave.cpp @@ -51,6 +51,8 @@ #undef max #include #include +#include +#include #include @@ -718,6 +720,23 @@ static bool imwrite_( const String& filename, const std::vector& img_vec, code = encoder->write( write_vec[0], params ); else code = encoder->writemulti( write_vec, params ); //to be implemented + + if (!code) + { + FILE* f = fopen( filename.c_str(), "wb" ); + if ( !f ) + { + if (errno == EACCES) + { + CV_LOG_WARNING(NULL, "imwrite_('" << filename << "'): can't open file for writing: permission denied"); + } + } + else + { + fclose(f); + remove(filename.c_str()); + } + } } catch (const cv::Exception& e) {