diff --git a/cv2/__init__.py b/cv2/__init__.py index 7612351b156b0dc7ad32582fca44590ab0c2df47..ee8cd254ea104712cf1a8610d6f39aaebfc5ab59 100644 --- a/cv2/__init__.py +++ b/cv2/__init__.py @@ -1,4 +1,6 @@ import importlib +import os +import sys from .cv2 import * from .data import * @@ -6,3 +8,8 @@ from .data import * # wildcard import above does not import "private" variables like __version__ # this makes them available globals().update(importlib.import_module('cv2.cv2').__dict__) + +if sys.platform == 'darwin': + os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = os.path.join( + os.path.dirname(os.path.abspath(__file__)), 'qt', 'plugins' + ) diff --git a/patches/patchQtPlugins b/patches/patchQtPlugins new file mode 100644 index 0000000000000000000000000000000000000000..00b84582142e04d8027a5c2951ac09a20503b931 --- /dev/null +++ b/patches/patchQtPlugins @@ -0,0 +1,12 @@ +diff --git a/opencv/CMakeLists.txt b/opencv/CMakeLists.txt +index 8ccad4d03a..0d5e2a79e9 100644 +--- a/opencv/CMakeLists.txt ++++ b/opencv/CMakeLists.txt +@@ -1164,6 +1164,7 @@ if(WITH_QT OR HAVE_QT) + if(HAVE_QT5) + status(" QT:" "YES (ver ${Qt5Core_VERSION_STRING})") + status(" QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${Qt5OpenGL_LIBRARIES} ${Qt5OpenGL_VERSION_STRING})" ELSE NO) ++ install(DIRECTORY ${Qt5_DIR}/../../../plugins DESTINATION lib/qt) + elseif(HAVE_QT) + status(" QT:" "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})") + status(" QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO) diff --git a/setup.py b/setup.py index b355fab16b6b399c582cc52b167e92b265c481bd..302adc5210846acd72c76a090cbfdf310d9f0537 100644 --- a/setup.py +++ b/setup.py @@ -128,6 +128,7 @@ def main(): if sys.platform == 'darwin' and not build_headless: cmake_args.append("-DWITH_QT=5") + rearrange_cmake_output_data['cv2.qt.plugins.platforms'] = [(r'lib/qt/plugins/platforms/libqcocoa\.dylib')] if build_headless: # it seems that cocoa cannot be disabled so on macOS the package is not truly headless @@ -144,6 +145,7 @@ def main(): # https://github.com/skvark/opencv-python/issues/21 cmake_args.append("-DCMAKE_CXX_FLAGS=-stdlib=libc++") cmake_args.append("-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9") + subprocess.check_call("patch -p1 < patches/patchQtPlugins", shell=True) if sys.platform.startswith('linux'): cmake_args.append("-DWITH_IPP=OFF") # tests fail with IPP compiled with