12、编译QT Opencv项目----------Opencv移植Arm

编译QT Opencv项目

编译QT Opencv项目

因为我们使用的QT项目中包含Opencv,所以要修改pro文件,连接opencv库

bash 复制代码
#-------------------------------------------------
#
# Project created by QtCreator 2024-12-03T00:01:13
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = FaceDetectArm
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

HEADERS += \
        mainwindow.h

FORMS += \
        mainwindow.ui


# 添加包含路径
INCLUDEPATH += /opt/arm-sysroot/usr/local/include/opencv4

#-------------------------------------------------
# 添加库路径和库
LIBS += -L/opt/arm-sysroot/usr/local/lib \
         -L/opt/arm-sysroot/usr/local/lib/opencv4/3rdparty \
        -lopencv_core \
        -lopencv_imgproc \
        -lopencv_objdetect \
        -lopencv_highgui \
        -lopencv_videoio \
        -lopencv_imgcodecs \
        -lopenjp2 \
        -lopencv_calib3d \
        -lopencv_features2d \
        -lopencv_flann \
        -ldl

# 如果需要链接 Qt 库(通常 Qt 会自动处理)
LIBS += -L/opt/qt5.12.10-arm/lib \
        -lQt5Widgets \
        -lQt5Core \
        -lQt5Gui

# 定义资源文件夹路径
RESOURCES_DIR = $$PWD/resources

# 定义目标复制目录路径
DEST_DIR = $$OUT_PWD/resources

# 仅在 Linux 系统下应用
unix {
    # 添加构建后命令,复制 resources 文件夹到输出目录
    QMAKE_POST_LINK += mkdir -p $$DEST_DIR && cp -r $$RESOURCES_DIR/* $$DEST_DIR/
}

头文件mainwindow.h

cpp 复制代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>
#include <QImage>
#include <QPixmap>
#include <QMessageBox>
#include <QFileDialog>
#include <opencv2/opencv.hpp>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void updateFrame();
    void on_processImageButton_clicked();
private:
    Ui::MainWindow *ui;
    cv::VideoCapture cap;
    cv::CascadeClassifier faceCascade;
    QTimer *timer;

    QImage Mat2QImage(const cv::Mat &mat);
};

#endif // MAINWINDOW_H

源文件mainwindow.cpp

cpp 复制代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>
#include <QImage>
#include <QPixmap>
#include <QMessageBox>
#include <QFileDialog>
#include <opencv2/opencv.hpp>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void updateFrame();
    void on_processImageButton_clicked();
private:
    Ui::MainWindow *ui;
    cv::VideoCapture cap;
    cv::CascadeClassifier faceCascade;
    QTimer *timer;

    QImage Mat2QImage(const cv::Mat &mat);
};

#endif // MAINWINDOW_H

主函数main.cpp

cpp 复制代码
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

ui布局

资源文件

项目的人脸训练数据放在resources目录下

haarcascade_frontalface_alt.xml

进入项目目录,创建build文件夹

bash 复制代码
cd /home/ubuntu/FaceDetectArm
mkdir build
cd build
pwd
/home/ubuntu/FaceDetectArm/build

进入build文件夹, 用qmake生成makefile文件

/opt/qt5.12.10-arm/bin/qmake ..

执行make编译

make -j4

相关推荐
娇娇yyyyyy2 小时前
QT编程(2):模态对话框和非模态对话框
qt
li星野4 小时前
QT面试题
java·数据库·qt
小温冲冲4 小时前
Qt进阶:高级渲染与界面定制完全指南(新手友好版)
c++·qt
小温冲冲4 小时前
QML Loader 详解:动态加载与组件管理
qt
Jason1880805014 小时前
一只小龙虾带一窝节点:JQOpenClaw 多 Node 架构接入 OpenClaw Gateway
qt·openclaw
森G4 小时前
10、交叉编译ffmpeg----------Opencv移植Arm
qt
十五年专注C++开发5 小时前
Qt中mysql和达梦数据库的驱动编译详细步骤
qt·mysql·达梦数据库·数据库驱动
蓝天智能5 小时前
CMakeLists.txt配置详细介绍
c语言·开发语言·qt
娇娇yyyyyy8 小时前
Qt编程(3): 信号和槽函数
开发语言·数据库·qt