Linux上Qt和Opencv人脸识别项目学习路线(嵌入式/C++)

11 篇文章 34 订阅
11 篇文章 5 订阅

本文将介绍Linux人脸识别项目的开发流程, 只作简略介绍所需知识点及大致流程。

注:若需详细教程请联系作者(见文末)。

一、基本开发环境搭建

1.1 安装虚拟机Ubuntu

虚拟机采用的是VMware,需要下载VMware安装包、ubuntu系统镜像,再进行安装。

1.1.1 安装虚拟机VMware

1.1.2 在VMware上安装Ubuntu

1.2 Linux开发环境搭建

安装好虚拟机并成功运行Ubuntu系统后,就开始准备一些基本环境的搭建,方便以后开发。

主要有以下几点内容:

  1. 虚拟机工具VMware Tools:windows与虚拟机间能相互拷贝
  2. 共享文件夹:虚拟机ubuntu能访问windows共享的文件
  3. 网络配置:能联网访问互联网
  4. 安装vim编辑器:学会用vim编辑文本

2. Linux基础学习

2.1 Linux常用命令

学习linux常用的命令,掌握linux系统的使用。

2.2 Linux上开发程序

学会在linux上编辑代码、编译、运行程序,掌握编译方法(gcc和g++),能开发简单的C/C++程序。

3. QT安装及学习

需要准备QT的安装包,根据自己项目所运行的系统需要选择一个版本。

Linux:qt-opensource-linux-x64-5.12.8.run

3.1 安装QT

安装qt creator,能创建工程,并编译运行。

3.2 QT开发学习

主要学习以下控件的使用:

  1. QLabel控件:能显示文本、图片;
  2. QPushButton控件:能点击按钮再作相关处理(调用到处理函数);
  3. QLineEdit控件:能获取输入的内容;
  4. QTimer控件:显示一个时间,精确到秒来更新;
  5. QComboBox控件:能添加多项内容,并在下拉菜单中查看或选中。

3.3 设计并实现项目QT界面

根据项目的功能,对项目的界面进行设计及布局,并用QT实现布局,形成初步界面效果。

4. Opencv的安装及学习

需要先准备Opencv库的源码包。

4.1 安装Opencv

利用源码包,配置、编译、安装,以及编译 运行demo程序。

4.2 Opencv开发学习

主要学习以下内容:

4.2.1 创建和编译OPENCV工程;

学会编写一个简单的opencv工程,并编译运行。

4.2.2 显示图片

利用opencv来显示图片

4.2.3 打开摄像头

利用opencv打开摄像头并显示画面

4.2.4 人脸检测

利用opencv自带的人脸特征模型来检测人脸

4.2.5 采集人脸

通过人脸检测来采集人脸图片并保存

4.2.6 人脸模型训练

利用采集到的人脸图片来进行人脸库模型训练

4.2.7 人脸识别

利用训练好的人脸库模型进行人脸识别

5. 数据库的学习及使用

        数据库的种类有很多,在此项目中推荐使用SQLite,使用SQLite的方式又有2种:单独编译安装一个SQLite库、使用QT自带的SQLite数据库。

         简便快捷起见,直接使用QT自带的SQLite数据库

         学习目标:设计一个存储用户数据的数据表,并实现增删改查等功能。

6. Linux系统编程

6.1 Linux系统编程简介

了解什么是Linux系统编程,有个大概的认知。

6.2 多线程编程

6.2.1 创建多线程:创建多条线程并执行不同任务

6.2.2 线程互斥:多条线程间访问同一个变量,如何互斥

6.3 Socket网络编程

主要学习TCP协议,客户端与服务器间的连接及通信收发数据。

6.4 V4L2驱动摄像头

学习Linux的V4L2视频子系统,并驱动摄像头获取图像数据。

7. 项目功能整合

        前面章节主要学习了项目要用到的功能,本章节开始对其进行整合,从而形成一个整体,即一个完整项目工程。

7.1 实现TCP通信

若项目采用两个独立应用即:客户端+服务器的架构,则需要实现TCP连接进行通信。

客户端功能:采集图像、显示界面及人脸框和识别结果的显示;

服务器功能:图像处理(人脸检测、人脸识别)、用户管理及数据存储等。

7.1.1 建立TCP服务器和客户端

创建一个两个程序/工程,两者建立TCP连接进行通信,一个客户端,一个服务器,相互间能收发数据。

7.1.2 通信协议定义

建立TCP连接,只是建立了一条相互收发数据的通路,若无规范来协定,两端收发的数据根本不知道是什么,因此,需要双方协议数据的格式,这就是协议。

协议的定义,参考文档:《附件A:通信协议-人脸识别》

当然,也可自行定义另一套。

7.1.3 实现视频传输

根据协议格式,客户端将摄像头获取到的图像数据,打包到协议数据包里面,再发送给服务器,服务器收到协议数据包,将图像数据解析出来,即实现了视频图像的传输。

由于使用的是MJPEG格式,每一帧都是一张完整的图片数据,因此,视频图像也就是由一帧帧的图片组成。

PS: 可以先实现一张图片的完整传输。

7.2 Qt显示摄像头画面

        将前面章节学习的V4L2运动摄像头、项目QT界面整合起来,实现V4L2获取到的摄像头图像在QT界面上显示出来。实际上,QT显示的还是图片,只是以一秒二三十帧的速率还快速刷新图片,从而形成视频的效果。

      

7.3 实现人脸检测

利用opencv自带的人脸特征模型,来实现人脸检测

7.4实现人脸录入及模型训练

实现人脸检测功能后,就可以采集人脸图像及保存了,如每个人录入10张人脸图并保存下来,每录入一个人脸,就要对人脸库重新训练一次。

录入人脸的同时,还要将人脸信息保存到数据库。

7.5 实现人脸识别

经人脸检测得到具有人脸的图像后,再对其进行识别,识别出是哪一个人。

7.6 完善其他功能

一些其他功能,如:删除人脸、保存人脸识别记录、查询人脸列表…等。

写在最后,希望对大家有帮忙,欢迎提出修改意见或建议。

相关资料/指导答疑/技术交流/帮助:

linux_face.txt · zengzr/share_contact - Gitee.com

如有疑问,上述方式联系作者,谢谢!

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好!LinuxQtOpenCV都是广泛使用的开源技术,它们在不同领域都有着重要的应用。以下是对这些技术的简要介绍: Linux是一种免费开源的操作系统,广泛应用于服务器、超级计算机、移动设备和嵌入系统等领域。Linux具有高度的稳定性、安全性和可定制性,同时还支持多种编程语言和开发环境。 Qt是一种跨平台的GUI(图形用户界面)开发框架,可以用于开发桌面应用、移动应用和嵌入应用等。Qt提供了丰富的GUI组件和工具,能够方便快速地构建各种复杂的应用程序。 OpenCV是一个基于开源许可的计算机视觉库,提供了大量的图像处理和计算机视觉算法,例如目标检测、图像识别和视频分析等。OpenCV可以与多种编程语言和开发环境集成,包括C++、Python和Java等。 在Linux平台上,QtOpenCV可以很好地结合使用,例如可以使用Qt编写图形用户界面,并使用OpenCV进行图像处理和计算机视觉分析。同时,也可以使用QtOpenCV的跨平台特性,将应用程序移植到其他操作系统或设备上运行。 希望这些信息对您有所帮助! ### 回答2: Linux QT OpenCV 是一种强大的编程组合,它们是开源平台上非常受欢迎的工具,可以用于许多不同领域的应用程序开发。 首先,Linux是一个广泛使用的开源操作系统,它为开发人员提供了一个稳定和可靠的环境,使得软件开发更加容易和高效。Linux还支持多种编程语言和开发工具,包括C++、Python和Ruby等。此外,Linux社区也有许多开源库和框架可供选择,可以帮助开发人员解决各种问题和挑战。 其次,QT是一个跨平台应用程序框架,它为开发人员提供了各种GUI组件、工具和API,可以帮助他们轻松地开发跨平台应用程序。与其他GUI框架相比,QT具有许多优点,例如卓越的性能、丰富的UI组件库和易于使用的API,这些特性使得QT成为许多开发人员的首选工具。 最后,OpenCV是一个强大的计算机视觉库,它可以帮助开发人员解决许多复杂的计算机视觉问题,包括图像识别、3D扫描和模识别等。OpenCV是一种跨平台库,可以在Linux、Windows和MacOS等操作系统上运行,它还支持多种编程语言,例如C++、Python和Java等。 综上所述,Linux QT OpenCV组合提供了强大的开发工具和库,可以帮助开发人员开发高质量的跨平台应用程序,实现许多复杂的计算机视觉任务。无论是在科学研究、产品开发还是其他领域,Linux QT OpenCV都是一种非常有价值的编程组合。 ### 回答3: Linux是一种开源的操作系统,由于其稳定性、安全性和灵活性受到了广泛的欢迎。Qt是一种跨平台的应用程序框架,可以用于开发GUI应用程序。而OpenCV是一种用于图像处理和计算机视觉任务的开源计算机视觉库。 在Linux上,QtOpenCV是非常流行的开发框架。Qt提供了开发GUI界面的功能,用户可以使用它来创建可接受的图形化用户界面和定制化GUI应用程序。而OpenCV则提供了不同的图像处理和计算机视觉算法,能够处理包括图像分析、目标检测、图像恢复、运动检测等等。OpenCV还支持处理视频流和多通道的图像,因此用户可以使用它来开发复杂的计算机视觉应用程序。 在使用Linux Qt OpenCV来实现应用程序时,用户可以利用Qt的图形化用户界面来构建程序的前端部分,以简化应用程序的输入、输出和用户操作。同时,OpenCV能够支持在图形界面下实时处理视频和图像。用户可以结合QtOpenCV来创建具有强大的图形界面和计算机视觉功能的应用程序,例如视频分析、运动检测、人脸识别和手势识别等。 总之,Linux Qt OpenCV是非常强大且灵活的开发框架,它们能够支持广泛的应用程序,从简单的控制台应用程序到复杂的计算机视觉应用程序。借助于这些框架,用户可以开发出高效、可靠、高性能的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值