Вы используете бэкэнд Qt highgui
, который выглядит так, как будто он вызывает контекстное меню, вызываемое правой кнопкой мыши, без возможности отключить его без перекомпиляции opencv. Если вы этого раньше не видели, скорее всего, вы использовали другой бэкэнд.
Если вы предпочитаете использовать Qt и не возражаете немного изменить исходный код opencv и перестроить его, это похоже на изменение метода DefaultViewPort::contextMenuEvent()
в файле modules/highgui/src/window_QT.cpp
, чтобы пропустить построение меню и просто вернуться, возможно, сработает (иначе это возможно построить меню из-за некоторого флага, который вы добавляете). В настоящее время бэкэнд Qt highgui автоматически создает меню, используя любые действия, доступные в обычном меню.
Вот ссылка на метод в текущей основной ветке opencv по состоянию на 2019-06-18:
https://github.com/opencv/opencv/blob/1d2ef6b2a14fd5f80277d64b14e4a9a2faddc7d8/modules/highgui/src/window_QT.cpp#L2697
который имеет этот код:
void DefaultViewPort::contextMenuEvent(QContextMenuEvent* evnt)
{
if (centralWidget->vect_QActions.size() > 0)
{
QMenu menu(this);
foreach (QAction *a, centralWidget->vect_QActions)
menu.addAction(a);
menu.exec(evnt->globalPos());
}
}
Альтернативой, которая может работать без перекомпиляции, может быть использование перетаскивания влево для выбора при проверке удерживаемой дополнительной клавиши-модификатора (например, shift или ctrl).
Кстати, я не проверял ни один из этих подходов, так что удачи! : -)
UPDATE:
Если вы все еще хотите Qt, но не нуждаетесь в необычных опциях меню и дополнительном поведении и тому подобном, похоже, вы можете добавить флаг CV_GUI_NORMAL
при создании окна, чтобы отключить функции CV_GUI_EXPANDED
Qt.