Установка и настройка Qt+OpenCV на Raspberry Pi 2

5 (1)

В предыдущей заметке мы затронули тему установки 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)

Войдите с помощью соцсетей:
или
введите свои данные: