diff --git a/modules/imgcodecs/test/test_grfmt.cpp b/modules/imgcodecs/test/test_grfmt.cpp
index 92238a95f0..54b7c215db 100644
--- a/modules/imgcodecs/test/test_grfmt.cpp
+++ b/modules/imgcodecs/test/test_grfmt.cpp
@@ -42,6 +42,8 @@
 
 #include "test_precomp.hpp"
 
+#include <fstream>
+
 using namespace cv;
 using namespace std;
 
diff --git a/modules/imgproc/src/floodfill.cpp b/modules/imgproc/src/floodfill.cpp
index 54a1fc976f..69228b3397 100644
--- a/modules/imgproc/src/floodfill.cpp
+++ b/modules/imgproc/src/floodfill.cpp
@@ -484,6 +484,12 @@ int cv::floodFill( InputOutputArray _image, InputOutputArray _mask,
     int depth = img.depth();
     int cn = img.channels();
 
+    if ( (cn != 1) && (cn != 3) )
+    {
+        CV_Error( CV_StsBadArg, "Number of channels in input image must be 1 or 3" );
+        return;
+    }
+
     if( connectivity == 0 )
         connectivity = 4;
     else if( connectivity != 4 && connectivity != 8 )