diff --git a/modules/highgui/CMakeLists.txt b/modules/highgui/CMakeLists.txt index 201f2e7cf1..c405ca422f 100644 --- a/modules/highgui/CMakeLists.txt +++ b/modules/highgui/CMakeLists.txt @@ -1,9 +1,9 @@ set(the_description "High-level GUI") if(ANDROID) - ocv_add_module(highgui opencv_imgproc opencv_imgcodecs OPTIONAL opencv_videoio WRAP python) + ocv_add_module(highgui opencv_imgproc OPTIONAL opencv_imgcodecs opencv_videoio WRAP python) else() - ocv_add_module(highgui opencv_imgproc opencv_imgcodecs OPTIONAL opencv_videoio WRAP python java) + ocv_add_module(highgui opencv_imgproc OPTIONAL opencv_imgcodecs opencv_videoio WRAP python java) endif() include(${CMAKE_CURRENT_LIST_DIR}/cmake/plugin.cmake) diff --git a/modules/highgui/src/plugin_wrapper.impl.hpp b/modules/highgui/src/plugin_wrapper.impl.hpp index 23f0ecf6bf..042cd0f1fa 100644 --- a/modules/highgui/src/plugin_wrapper.impl.hpp +++ b/modules/highgui/src/plugin_wrapper.impl.hpp @@ -235,12 +235,15 @@ std::vector getPluginCandidates(const std::string& baseName) return results; } -// NB: require loading of imgcodecs module +#ifdef HAVE_OPENCV_IMGCODECS // NB: require loading of imgcodecs module static void* g_imwrite = (void*)imwrite; +#endif void PluginUIBackendFactory::loadPlugin() { +#ifdef HAVE_OPENCV_IMGCODECS CV_Assert(g_imwrite); +#endif for (const FileSystemPath_t& plugin : getPluginCandidates(baseName_)) { auto lib = std::make_shared(plugin); diff --git a/modules/highgui/src/precomp.hpp b/modules/highgui/src/precomp.hpp index ce9efe4153..574eaba773 100644 --- a/modules/highgui/src/precomp.hpp +++ b/modules/highgui/src/precomp.hpp @@ -60,8 +60,6 @@ #include "opencv2/imgproc/imgproc_c.h" #include "opencv2/highgui/highgui_c.h" -#include "opencv2/imgcodecs.hpp" - #include #include #include diff --git a/modules/highgui/src/window_w32.cpp b/modules/highgui/src/window_w32.cpp index 76f320f19f..42b0892c1b 100644 --- a/modules/highgui/src/window_w32.cpp +++ b/modules/highgui/src/window_w32.cpp @@ -2132,6 +2132,7 @@ cvDestroyAllWindows(void) static void showSaveDialog(CvWindow& window) { +#ifdef HAVE_OPENCV_IMGCODECS if (!window.image) return; @@ -2193,6 +2194,11 @@ static void showSaveDialog(CvWindow& window) cv::flip(cv::Mat(sz.cy, sz.cx, CV_8UC(channels), data, (sz.cx * channels + 3) & -4), tmp, 0); cv::imwrite(szFileName, tmp); } +#else + CV_UNUSED(window); + CV_LOG_WARNING("Save dialog requires enabled 'imgcodecs' module."); + return; +#endif } /*