Ubuntu18 下源码编译OpenCv4.4 并在Qt中使用
更新包
# Install the newest versions of all packages currently installed
sudo apt-get -y upgrade
# Handles changing dependencies with new versions of packages
sudo apt-get -y dist-upgrade
# Remove packages that are now no longer needed
sudo apt-get -y autoremove
安装OpenCV所需要的依赖
# Build tools:
sudo apt-get install -y build-essential cmake
# GUI (if you want to use GTK instead of Qt, replace 'qt5-default' with 'libgtkglext1-dev' and remove '-DWITH_QT=ON' option in CMake):
sudo apt-get install -y qt5-default libvtk6-dev
# Media I/O:
sudo apt-get install -y zlib1g-dev libjpeg-dev libwebp-dev libpng-dev libtiff5-dev libjasper-dev libopenexr-dev libgdal-dev
# Video I/O:
sudo apt-get install -y libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev yasm libopencore-amrnb-dev libopencore-amrwb-dev libv4l-dev libxine2-dev
# Parallelism and linear algebra libraries:
sudo apt-get install -y libtbb-dev libeigen3-dev
# Python:
sudo apt-get install -y python-dev python-tk python-numpy python3-dev python3-tk python3-numpy
# Java:
sudo apt-get install -y ant default-jdk
# Documentation:
sudo apt-get install -y doxygen
安装OpenCV
mkdir build & cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_EIGEN=ON ..
sudo make # compile
sudo make install # install
sudo ldconfig # load config
Qt项目中配置
CMAKE
在Cmake构建的项目中,需要在CmakeLists.txt中添加find_package 和target_link_libraries,帮助cmake构建时候查找包与库
find_package(OpenCV REQUIRED)
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES})
添加好opencv库的cmake工程文件类似如下:
cmake_minimum_required(VERSION 2.8.12)
project(SongCamera)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt5Core REQUIRED)
find_package(OpenCV REQUIRED)
FILE(GLOB SC_FILES "*.cpp" "*.h")
add_executable(${PROJECT_NAME} ${SC_FILES})
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::Qml Qt5::Quick) # 指定lib库的位置
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES})
QMAKE
Qmake构建Qt程序更方便, 在构建OpenCV的程序时候需要添加Include的文件夹和库,在这里注意include的路径要包含opencv4那一级.添加库后的.pro文件如下:
#-------------------------------------------------
#
# Project created by QtCreator 2020-10-22T23:07:21
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = EagleEye
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES +=
main.cpp
mainwindow.cpp
cvwidget.cpp
HEADERS +=
mainwindow.h
cvwidget.h
FORMS +=
mainwindow.ui
##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
INCLUDEPATH += /usr/local/include
/usr/local/include/opencv4/opencv2
/usr/local/include/opencv4
LIBS+=/usr/local/lib/libopencv_highgui.so
/usr/local/lib/libopencv_core.so
/usr/local/lib/libopencv_imgproc.so
/usr/local/lib/libopencv_imgcodecs.so
/usr/local/lib/libopencv_videoio.so
##<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<