linux(debian系列)配置seetaface6

news2024/11/25 18:59:40

seetaface6依赖于opencv,另外我们需要界面,所以也需要Qt(你也可以选择其他的)。

这里的目标是配置好环境,能够编译并运行seetaface6给的demo。

那个demo中用到了sqlite数据库,所以我们还需要安装sqlite。

总的来说就是以下步骤:

  1. 编译并安装OpenCV
  2. 编译并安装seetaface6
  3. 安装Qt
  4. 安装sqlite和sqlite开发包
  5. 编译运行seetaface_demo

一、安装OpenCV

这里用官网给的步骤即可,目前最新的是opencv4.7,由于需要人脸识别,所以我们需要安装opencv_contrib模块。
https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html

# Install minimal prerequisites (Ubuntu 18.04 as reference)
sudo apt update && sudo apt install -y cmake g++ wget unzip
# Download and unpack sources
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.x.zip
unzip opencv.zip
unzip opencv_contrib.zip
# Create build directory and switch into it
mkdir -p build && cd build
# Configure
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.x/modules ../opencv-4.x
# Build
cmake --build .

注意,默认安装路径是/usr/local

  • 头文件在/usr/local/include/opencv4
  • 链接库在/usr/local/lib
  • cmake文件在/usr/local/cmake

我们知道这三个就够了。可以用-D CMAKE_INSTALL_PREFIX=来指定安装路径。
这里假定为默认路径/usr/local

如果你不想自己编译,可以用我打包好的:
https://github.com/sixsixQAQ/opencv4-dev

$dpkg --info opencv4-dev.deb
 新格式的 Debian 软件包,格式版本 2.0。
 大小 16311436 字节:主控包=380 字节。
     265 字节,    9 行      control              
 Package: opencv4-dev
 Version: 1.0
 Architecture: amd64
 Maintainer: sixqaq@outlook.com
 Description: OpenCV4 development package with opencv-contrib module.
        binary:         /usr/local/bin
        includes:       /usr/local/include/opencv4
        lib:            /usr/local/lib
        share:          /usr/local/share

二、编译安装seetaface6

1. 去github找到seetafce6,这个只是个是demo,我们先不管它

在这里插入图片描述

2. 根据提示,seetaface6源码在SeetaFace6Open

在这里插入图片描述

3. 根据提示下载

git clone --recursive https://github.com/SeetaFace6Open/index.git

在这里插入图片描述

4. 编译

然后会有一个index文件夹,我们需要挨个模块编译:按个进入它们的craft文件夹,运行build.linux.x64.sh
但是编译有顺序要求,否则有的会无法编译通过
这里给个编译脚本:

#!/bin/bash

modules="OpenRoleZoo
SeetaAuthorize
TenniS
FaceBoxes
FaceRecognizer6
FaceTracker6
Landmarker
PoseEstimator6
QualityAssessor3
SeetaAgePredictor
SeetaEyeStateDetector
SeetaGenderPredictor
SeetaMaskDetector
FaceAntiSpoofingX6"

for dir in $modules
do
        cd $dir/craft
        bash build.linux.x64.sh
        cd -
done

编译得到的东西在index/build,里面有头文件、链接库、.cmake文件,是我们开发和编译demo需要的。

5.配置路径/安装

你需要将编译出的文件配置到位,放到/usr/lib、/usr/incldue等位置(这样弊端是卸载不方便),或者在你的项目构建文件中填写头文件路径、链接库路径(弊端是比较繁琐,不方便迁移),否则会找不到文件。

我的做法是把它打包成.deb(推荐),方便安装和卸载:https://github.com/sixsixQAQ/seetaface6-dev

$dpkg --info seetaface6-dev.deb
 新格式的 Debian 软件包,格式版本 2.0。
 大小 5529512 字节:主控包=360 字节。
     226 字节,    9 行      control              
 Package: seetaface6-dev
 Version: 1.0
 Architecture: amd64
 Maintainer: sixqaq@outlook.com
 Description: seetaface6 development package.
        binary:         /usr/bin
        headers:        /usr/include
        lib:            /usr/lib/seetaface6
        cmake:          /usr/lib/cmake

你也可以自己打包,很简单,教程参见:如何制作deb包

三、安装Qt5

由于demo用的是qt5,所以要安装qt5。
安装:略。
建议:完美解决QT在线安装太慢

四、配置sqlite

apt install sqlite3 libsqlite3-dev

这里sqlite3是命令行工具,-dev的是开发包,我们两个都需要。

五、编译运行seetaface6-demo

1.修改pro文件

删除seetaface6-demo中的.pro.user文件,然后用qt creator打开.pro文件,把Qt5勾上来重新配置项目。
这个demo用的qmake,我们需要修改那个.pro文件,这里只求在linux运行即可,所以我把windows的全删除了。
seetaface6-dev包中把seetaface6链接库安装到了/usr/lib/seetaface6,修改一下头文件路径和链接库路径即可。

#-------------------------------------------------
#
# Project created by QtCreator 2020-03-16T14:40:38
#
#-------------------------------------------------

QT       += core gui sql 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = seetaface_demo
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 \
    videocapturethread.cpp \
    inputfilesprocessdialog.cpp \
    resetmodelprocessdialog.cpp

HEADERS += \
        mainwindow.h \
    videocapturethread.h \
    inputfilesprocessdialog.h \
    resetmodelprocessdialog.h

forms += \
        mainwindow.ui

#linux:
INCLUDEPATH += /usr/local/include/opencv4

#OpenCV的链接库安装路径,这里是/usr/local/lib
LIBS += -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs
#seetaface6链接库的路径,这里是/usr/lib/seetaface6
LIBS += -L/usr/lib/seetaface6 -lSeetaFaceDetector600 -lSeetaFaceLandmarker600 \
        -lSeetaFaceAntiSpoofingX600 -lSeetaFaceTracking600 -lSeetaFaceRecognizer610 \
        -lSeetaQualityAssessor300 -lSeetaPoseEstimation600 -lSeetaAuthorize -ltennis

RESOURCES += \
    face_resource.qrc

2.下载模型

github上有模型的链接,下载、解压,并放到你的Qt构建目录下,重命名为models,

3.运行

点击绿三角运行。

建议:没摄像头的买个摄像头。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cosmos 基础(一)

Cosmos 区块链互联网 Cosmos是一个不断扩展的生态系统,由相互连接的应用程序和服务组成,为去中心化的未来而构建。 Cosmos 应用程序和服务使用IBC(the Inter-Blockchain Communication protocol, 区块链间通信协议)连接。这一创新使您能够在主权国家之…

僵尸进程孤儿进程

目录 1. 僵尸进程 2. 孤儿进程 1. 僵尸进程 僵尸状态:一个进程已经退出,但是还不允许被OS释放,处于一个被检测的状态。 僵死状态(Z-Zombies)是一个比较特殊的状态。当子进程退出并且父进程没有读取到子进程退出的返…

学习记录663@项目管理之项目范围管理

什么是项目范围管理 项目范围管理包括确保项目做且只做所需的全部工作,以成功完成项目的各个过程。它关注的焦点是:什么是包括在项目之内的,什么是不包括在项目之内的,即为项目工作明确划定边界。通俗地讲,项目范围管理就是要做范…

Dubbo框架学习(第二章Dubbo3拥抱云原生)

由于在微服务领域有两大框架统治,一个是springCloud的全家桶,一个是Dubbo。我用Dubbo比较少,所以也是学习状态。Dubbo框架学习,资料来源于cn.dubbo.apache.org。第二章Dubbo3拥抱云原生新一代的 Triple 协议基于 HTTP/2 作为传输层…

计算机网络第五章、第六章

1.传输层定义:为应用层提供通信服务使用网络层的服务传输层的功能:传输层提供进程和进程之间的逻辑通信复用和分用传输层对收到的报文进行差错检测传输层的两种协议传输层的两个协议:1.面向连接的传输控制协议TCP:传送数据之前必须…

人工智能辅助药物发现(1)肿瘤靶点识别

目录基于AI的靶点识别概述肿瘤建模肿瘤转录组转录组异质性单细胞转录组数据分析单细胞表观肿瘤模型肿瘤中的表观遗传模型基于甲基化测序技术的肿瘤表观遗传模型基于染色质可及性的肿瘤表观遗传模型多模态肿瘤建模靶点识别基于单细胞RNA的靶点发现基于表观的靶点发现基于多组学的…

点击化学交联剂N3-SS-N3,叠氮-二硫键-叠氮简介,CAS:352305-38-5

英文名称:Azidoethyl-SS-ethylazide N3-SS-N3 N3-S-S-N3 化学式:C4H8N6S2 分子量:204.3 CAS:352305-38-5 存储条件:-20C,避光,避湿 用 途:仅供科研实验使用,不用于…

《Buildozer打包实战指南》第四节 正式打包一个apk文件

目录 4.1 了解buildozer.spec配置文件中的常用参数 4.2 修改配置文件打包apk 在上一节内容中,我们配置好了打包环境,还顺带成功打包出了一个apk文件(读者可以把这个apk安装到手机上运行)。不过在打包这个apk前,我们没…

Unity学习笔记--如何在Unity运行cmd?并且在Unity中利用cmd操作svn(例如生成svn--diff文件)

目录前言需求拆分解决方案实操前言 最近工作有一个需求,简单来说是在 Unity 里面动态获取 SVN diff 的数据,并且针对这些 diff 文件做对应操作 需求拆分 我们首先拆分下需求 Unity里面获取 SVN 的 diff 文件针对生成的 diff 文件做解析,找…

Qt 视频播放

一、简介Qt对音视频的播放和控制,相机拍照,收音机等多媒体应用提供了强大的支持。Qt5使用了全新的Qt Multimedia模块来实现多媒体应用,而原来Qt4中用于实现多媒体功能的Phonon模块已经被移除。新的Qt Multimedia模块提供了丰富的接口&#xf…

【从零开始学习深度学习】50.Pytorch_NLP项目实战:卷积神经网络textCNN在文本情感分类的运用

在之前介绍的“卷积神经网络”中我们探究了如何使用二维卷积神经网络来处理二维图像数据。在语言模型和文本分类任务中,我们将文本数据看作是只有一个维度的时间序列,并很自然地使用循环神经网络来表征这样的数据。其实,我们也可以将文本当作…

安装 MySQL

1.下载安装文件 访问MySQL官网下载安装文件。 如下图所示,点击页面中的“DOWNLOAD”按钮。 点击下载之后自动进行下载。下载到本地的文件名称为:mysql-8.0.31-winx64.zip 2.解压安装文件 将压缩文件解压到你安装的目录,比如:F:…

数据结构与算法笔记

0 核心框架汇总 框架思维 数据结构的存储方式只有两种:数组(顺序存储)和链表(链式存储) 算法 数学中的算法重在推导,计算机中的算法重在穷举 计算机算法的本质特点: 穷举 穷举有两个关键难点…

Linux环境 java应用问题排查

0)查看CPU占用高的进程PID top -d 1 或 top -H 注: top -d 1 中的 1 是数字:1,不是字母 :l 。 1)查看内存使用情况(memory-info.log为具体文件路径) jmap -heap PID > memory-i…

某程序员跳槽涨薪50%!网友:不合理~

在IT届,有个传闻,跳槽就是程序猿涨工资最好的方式。大家认为程序员跳槽要求涨薪50%合理吗?有人说:凭本事涨的为啥不合理!01程序员跳槽要求涨薪50%过分吗?在知乎上看到这样一个帖子,有人提问“程…

CANoe 15版本中CAPL代码自动补全功能的小Bug

最近在使用CANoe 15版本的软件编写CAPL脚本时,遇到了一些小的困扰,记录下来分享给大家! 当我在capl函数中要传入两个参数时,除了逗号隔开两个参数外,还希望有一个空格能进一步拉开两个参数的距离,增加代码的可读性 但是,传入第一个参数后,输入逗号,此时capl的自动补…

IP 网络主动监测系统 Renix Active

一、IT网络运维面临的挑战​ 1.网络性能可视化​ • 与公有云和SaaS平台连接的可靠性​ • 广域网线路性能​ • 互联网专线性能​ 2.诊断工具​ • 现场无IT工程师覆盖​ • 诊断的人力费用​ • 网络与应用系统的纠结​ 3.用户体验​ • Web应用的访问质量​ • 语…

C++设计模式(2)——工厂方法模式

亦称: 虚拟构造函数、Virtual Constructor、Factory Method 意图 工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。 问题 假设你正在开发一款物流管理应用。 最初版本只能处理卡车…

单目标应用:蜣螂优化算法DBO与麻雀搜索算法SSA求解无人机三维航迹规划(提供Matlab代码)

一、无人机三维航迹规划 三维航迹规划是无人机在执行任务过程中的非常关键的环节,三维航迹规划的主要目的是在满足任务需求和自主飞行约束的基础上,计算出发点和目标点之间的最佳航路。 1.1路径最短约束 无人机航迹规划的首要目标是寻找起飞点和目标点…

一文搞定visual studio code远程服务器的配置和文件上传

在跑大型程序的时候需要用到服务器,因此如何远程操作服务器就至关重要了。 很多教程教如何使用putty来操作,但是我的安装时候就出现错误了。再加上我用的visual studio code提供远程服务器控制以及文件传输功能。 因此我就使用vscode来配置相应的环境并…