Проблема в настройке QT для интеграции с opencv в ubuntu с помощью cmake
Привет, я следил за учебником OpenCV из книги. До этого у меня уже был установлен OpenCV на моей машине. Я работаю с OpenCV &C++ на терминале и компилирую свою программу с помощью CMake. Вот моя версия Ubuntu OpenCV :
Ubuntu 18.04.4 LTS OpenCV version : 4.2.0
В книге всякий раз, когда они используют
imshow()
, он показывает окно с панелью инструментов и строкой состояния на нем, мой нет. И позже, в следующих главах, они все еще используют эту панель инструментов для многих целей.Что я уже пробовал:
После некоторого поиска я обнаружил, что он использует графический интерфейс Qt. Итак, я приступил к установке Qt, используя следующие коды :
sudo apt-get install qtcreator sudo apt-get install qt5-default
Я также следил за установку приложения Qt Wiki Когда я проверил свою версию Qt, вот что я получил :
$ qmake --version QMake version 3.1 Using Qt version 5.9.5 in /usr/lib/x86_64-linux-gnu
Итак, теперь у меня есть Qt, установленный в моей машине, но как мне интегрировать его с моим OpenCV, чтобы я мог использовать его в своих программах, кроме как поставить `highgui` lib ? Я столкнулся с этой ошибкой :
The library is compiled without QT support in function
Я искал в интернете, но до сих пор не знаю, как это сделать. Нужно ли мне полностью удалить OpenCV и снова скомпилировать его с помощью QT с помощью CMake ?
ОБНОВЛЕНИЕ
Очевидно, не было другого способа, кроме как полностью удалить OpenCV, а затем скомпилировать и переустановить его с помощью QT. Вот что я делаю :
1. Удалите OpenCV (уже переустановленный 3 раза)
sudo apt-get purge '*opencv*' sudo find / -name "*opencv*" -exec rm -rf {} \;
2. Клонирование в формате OpenCV OpenCV и ВНО с GitHub, и во время сборки с CMake в терминал положить
WITH_QT = ON
вот полная настройка, которую я использовал :cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D WITH_QT=ON \ -D WITH_OPENGL=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON ..
Никаких проблем, и я правильно установил OpenCV (протестирован с запуском нескольких программ). А вот и версия :
pkg-config --modversion opencv 4.2.0
Я тоже наткнулся на этот вопрос Интеграция OpenCV с Qt, но все равно никакого решения нет. Но почему я все еще получаю ошибку в любом проекте С QT на нем (у меня есть QT_RADIOBOX на моей функции createButton), даже после того, как я полностью переустановлю, соберу и сделаю OpenCV с помощью
WITH_QT=ON
? Неужели CMake не удалось найти QT ?terminate called after throwing an instance of 'cv::Exception' what(): OpenCV(4.2.0-dev) /home/raisa/opencv_build/opencv/modules/highgui/src/window.cpp:597:error: (-213:The function/feature is not implemented) The library is compiled without QT support in function 'createButton' [2] 10467 abort (core dumped) ./exerc13
Вот создать :
//Create buttons createButton("Blur", blurCallback, NULL, QT_CHECKBOX, 0); createButton("Grey", greyCallback, NULL, QT_RADIOBOX, 0); createButton("RGB", bgrCallback, NULL, QT_RADIOBOX, 1); createButton("Sobel", sobelCallback, NULL, QT_PUSH_BUTTON, 0);Что посоветуете ?
Обновление [2]
Я читал о явном определении пути для интеграции Qt вместо того, чтобы просто ставить "WITH_QT=ОПоэтому я решил пойти с cmake-gui и определил каждый путь для конфигурации пути Qt. Подобный этому :
WITH_QT=ON (checked in cmake-gui) Qt5Concurrent_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5Concurrent Qt5Core_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5Core Qt5Gui_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5Gui Qt5OpenGL_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5OpenGL Qt5Test_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5Test Qt5Widgets_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5Widgets Qt5_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5(Установка Qt following installation docs from Установка Qt для Ubuntu)
Опять же, OpenCV был установлен идеально. Проверено путем запуска простых программ. Но все равно сталкиваюсь с той же ошибкой для Qt. Совет ?
Richard MacCutchan
Где же остальная часть сообщения об ошибке? Он должен дать имя функции, а также исходный файл и номер строки.
lock&_lock
Обновлено !
Richard MacCutchan
Я погуглил это сообщение, но не могу найти окончательного ответа. Похоже, что вы не одиноки в этом. Вы можете попробовать веб-сайты openCV или QT, чтобы увидеть, сможете ли вы получить более быстрый ответ там.
Richard MacCutchan
Я быстро просмотрел некоторые источники на github. Похоже, что рад, источником проверки для определения тега HAVE_QT
и нет WITH_QT
Если он не определен, то вы получите ошибку, которую видите.
Посмотрите, можете ли вы узнать, где этот тег определен (если он вообще существует) либо в исходном файле, либо в файле CMake.
lock&_lock
Спасибо снова. Да, я все время пробовал форум OpenCV. На самом деле это не самый отзывчивый форум. А что касается WITH_QT, то это один из многих вариантов флага для сборки OpenCV с CMake. Я проверю больше, если мне нужно будет где-то определить HAVE_QT. Спасибо