В предыдущей заметке мы затронули тему установки OpenCV на одноплатный микрокомпьютер Raspberry и в этот раз продолжим эту тему. На этот раз мы затронем установку Qt5 и настройки проекта в связке с OpenCV.
Вся процедура компиляции и установки займет окола 45-50 чесов, так что запасаемся терпением и вперед.
Если Вы не делали update/upgrade то стоит сначала сделать это. Открываем терминал и пишем:
sudo apt-get update
sudo apt-get upgrade
Следующим шагом будет установка дополнительных библиокек
sudo apt-get install libfontconfig1-dev libdbus-1-dev libfreetype6-dev libudev-dev libicu-dev libsqlite3-dev libxslt1-dev libssl-dev libasound2-dev libavcodec-dev libavformat-dev libswscale-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev gstreamer-tools gstreamer0.10-plugins-good gstreamer0.10-plugins-bad libraspberrypi-dev libpulse-dev libx11-dev libglib2.0-dev libcups2-dev freetds-dev libsqlite0-dev libpq-dev libiodbc2-dev libmysqlclient-dev firebird-dev libpng12-dev libjpeg62-dev libgst-dev libxext-dev libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync0 libxcb-sync0-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-glx0-dev libxi-dev libdrm-dev
Тперь необходимо создать директорию в которую будет скачиватся и компилироватся Qt. На диске дожно быть свободного места не мене 6 Gb иначе просто в процессе установки у Вас не хватит места для выполнения последующих действий.
mkdir ~/opt
cd ~/opt
Берем исходники из репозитории qt и копируем себе на машину:
git clone git://code.qt.io/qt/qt5.git
cd qt5
./init-repository
Осталось дело за малым, сконфигурировать нашу сборку. Для этого нам необходимо подправить конфг файл ~/opt/qt5/qtbase/configure . Тех строчек которых нету в файле - дописываем, а которые есть добавляем. Открываем в удобном Вам тектовом редакторе и ищем строчку QT_CFLAGS_DBUS= и дописываем/добавляем нехватающих строк:
# flags for raspberry pi build
# flags for libdbus-1
QT_CFLAGS_DBUS="-I/usr/include/dbus-1.0/ -I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include/"
QT_LIBS_DBUS=-ldbus-1
# flags for Glib (X11 only)
QT_CFLAGS_GLIB="-I/usr/include/glib-2.0/ -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include/"
QT_LIBS_GLIB=-lglib-2.0
QT_CFLAGS_PULSEAUDIO="-I/usr/include/glib-2.0/ -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include/"
QT_LIBS_PULSEAUDIO="-lpulse -lpulse-mainloop-glib"
# flags for GStreamer (X11 only)
QT_CFLAGS_GSTREAMER="-I/usr/include/gstreamer-0.10/ -I/usr/include/glib-2.0/ -I/usr/lib/arm-linux-
gnueabihf/glib-2.0/include/ -I/usr/include/libxml2/"
QT_LIBS_GSTREAMER=
В этом же фале необходимо найти строчку QT_CFLAGS_FONTCONFIG и зменить ее. Данная строка будет находится в блоке if else и я изменил в обоих ветках ее, хотя рекомендуют только в else
QT_CFLAGS_FONTCONFIG=-I/usr/include/freetype2/
Теперь выполняем саму конфигурацию. Ввесь вывод мы перенаправляем в файл, что бы потом можно было удобно просмотреть какие модули включены и поддреживаются.
./configure -v -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=/usr/bin/ -opensource -confirm-license -optimized-qmake -reduce-exports -release -qt-pcre -make libs -prefix /usr/local/qt5 &> output
В конце файл output мможно увидить что было включено а что не поддрживается
Configure summary
Building on: linux-g++ (arm, CPU features: none detected)
Building for: devices/linux-rasp-pi-g++ (arm, CPU features: none detected)
Platform notes:
- Also available for Linux: linux-clang linux-kcc linux-icc linux-cxx
qmake vars .......... styles += mac fusion windows DEFINES += QT_NO_MTDEV CONFIG += use_libmysqlclient_r QT_CFLAGS_GLIB = -I/usr/include/glib-2.0/ -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include/ QT_LIBS_GLIB = -$
Build options:
Configuration .......... accessibility accessibility-atspi-bridge alsa audio-backend c++11 clock-gettime clock-monotonic compile_examples concurrent cross_compile cups dbus egl eglfs eglfs_brcm enable_new_dtags$
Build parts ............ libs
Mode ................... release
Using sanitizer(s)...... none
Using C++11 ............ yes
Using gold linker....... no
Using new DTAGS ........ yes
Using PCH .............. yes
Target compiler supports:
Neon ................. no
Qt modules and options:
Qt D-Bus ............... yes (loading dbus-1 at runtime)
Qt Concurrent .......... yes
Qt GUI ................. yes
Qt Widgets ............. yes
Large File ............. yes
QML debugging .......... yes
Use system proxies ..... no
Support enabled for:
Accessibility .......... yes
ALSA ................... yes
CUPS ................... yes
Evdev .................. yes
FontConfig ............. yes
FreeType ............... yes (system library)
Glib ................... yes
GStreamer .............. yes (0.10)
GTK theme .............. no
HarfBuzz ............... yes (bundled copy)
Iconv .................. yes
ICU .................... yes
Image formats:
GIF .................. yes (plugin, using bundled copy)
JPEG ................. yes (plugin, using system library)
PNG .................. yes (in QtGui, using system library)
journald ............... no
libinput................ no
mtdev .................. no
Networking:
getaddrinfo .......... yes
getifaddrs ........... yes
IPv6 ifname .......... yes
libproxy.............. no
OpenSSL .............. yes (loading libraries at run-time)
NIS .................... yes
OpenGL / OpenVG:
EGL .................. yes
OpenGL ............... yes (OpenGL ES 2.0+)
OpenVG ............... no
...
Ну вот, остался самый долгий этап. Следующий этап занял порядка 50 часов.
Пишем:
make
sudo make install
После установки создаем .bashrc файл в котором пишем следующее:
export LD_LIBRARY_PATH=/usr/local/qt5/lib/
export PATH=$PATH:/usr/local/qt5/bin
Затем необходимо выполнить:
source ~/.bashrc
После чего можем написать
which qmake
и мы уивидим путь к нашему qmake
На этом процесс установки завершен и мы смело можем использовать opencv и qt5 на нашем Raspberry.
Для создание проекта qt, который использует библиотеку OpenCV необходимо в файл проекта *.pro добавть необходимые библиотеки для Вашей работы.
Пример файла *.pro
QT += core
QT -= gui
TARGET = OPenCVHaar
CONFIG += console
CONFIG -= app_bundle
LIBS *= -lopencv_core
-lopencv_video
-lopencv_highgui
-lopencv_imgproc
-lopencv_objdetect
TEMPLATE = app
SOURCES += main.cpp
Комментарий (0)