ДанМашек правильно заметил 125% масштабирование окна OpenCV по сравнению с исходным размером изображения, что привело меня к решению.
Такое поведение является результатом функции масштабирования пользовательского интерфейса в более поздних версиях Windows.
(Загляните в «Настройки \ Система \ Дисплей \ Масштабирование»)
Поскольку OpenCV не помечает свои окна графического интерфейса как «DPI Aware», Windows масштабирует их до любого процента, указанного пользователем.
(Другой побочный эффект заключается в том, что win32gui.GetWindowRect () возвращает, казалось бы, неверные координаты, как описано здесь )
Обход
Перейдите по пути python.exe
, щелкните правой кнопкой мыши исполняемый файл, выберите «Свойства» и на вкладке «Совместимость» нажмите «Изменить настройки высокого DPI». Затем активируйте «Переопределить поведение масштабирования с высоким разрешением», установите «Выполнение масштабирования» в «Приложение».
Это изменит поведение для всех сеансов, которые обслуживает python.exe
.
Для преодоления этого ограничения можно использовать виртуальные среды.
Решение
Эта статья SO описывает, как можно установить поведение масштабирования на уровне сеанса в коде Python.