基于qt的人脸识别系统,qt人脸识别实例教程
私藏项目实操分享
夸脱功能优化:Qt人脸识别@TOC
一、效果图
如图一所示,为我用夸脱所做的一个简易的人脸识别代码,点击识别即可自动识别出照片中的人脸。
二、使用步骤
项目架构:
1.赞成部分
代码如下:
# -
#由的使用创建的项目2021-08-01T20:37:50
# -
QT=核心图形用户界面
greaterThan(QT_MAJOR_VERSION,4): QT=小部件
TARGET=OpencvFace
模板=应用程序
#如果使用,下面的定义会使编译器发出警告
# Qt的任何已被标记为不推荐使用的特性(确切的警告
#取决于您的编译器)。请参考的文档
#弃用API,以便了解如何将您的代码从应用程序接口中移植出来。
DEFINES=QT_DEPRECATED_WARNINGS
#如果使用不推荐使用的API,还可能导致代码无法编译。
#为此,请取消对以下行的注释。
#您也可以选择仅在夸脱的特定版本中禁用不推荐使用的API .
# DEFINES=QT _ DISABLE _ DEPRECATED _ BEFORE=0x 060000 #禁用Qt 6.0.0之前已弃用的所有应用程序接口
来源=\
主页面
主窗口。卡片打印处理机(Card Print Processor的缩写)
标题=\
主窗口。h
表单=\
主窗口。用户界面
包含路径=D:\ TYUT \ C-yunding \ program app \ C \ Qt \ OpenCV _ 3。4 .3-构建\安装\包含
LIBS=D:\ TYUT \ C-yunding \ program app \ C \ Qt \ OpenCV _ 3。4 .3-Build \ install \ x86 \ mingw \ bin \ libopencv _ * .动态链接库
2.h部分
代码如下:
#ifndef MAINWINDOW_H
#定义主窗口_H
#包含主窗口
#包含opencv2/opencv.hpp
#包含矢量
使用名称空间cv;
使用命名空间标准
命名空间Ui {
类主窗口
}
类主窗口:公共主窗口
{
q _对象
公共:
显式主窗口(q widget * parent=0);
~主窗口();
void initMainWindow();
void imgProc();
void img show();
专用插槽:
void on _ detect button _ clicked();
私人:
ui:主窗口* ui
Mat myImg
QImage myQImg
};
#endif //MAINWINDOW_H
## 3.卡片打印处理机(卡片打印处理器的缩写)部分
代码如下:
#包含"主窗口. h "
#include ui_mainwindow.h
主窗口:主窗口(q widget * parent):
QMainWindow(父级),
用户界面(新Ui:主窗口)
ui- setupUi(这个);
initMainWindow();
主窗口:~主窗口()
删除ui;
void MainWindow:initMainWindow()
QString img path= ly.jpg//你要识别的图片,所在位置需与赞成文件在同级目录
mat img data=im read(img path。到拉丁语1().data());
cvtColor(imgData,imgData,COLOR _ bgr 2 RGB);
myImg=imgData
myQImg=QImage((const unsigned char *)(img数据。data)、imgData.cols、imgData.rows、QImage:Format _ RGB 888);
img show();
void MainWindow:imgShow()
ui-view label-setPixmap(qpix map:from image(myqimg。scaled(ui-view label-size()、Qt:KeepAspectRatio));
void MainWindow:imgProc()
级联分类器人脸检测器;
级联分类器眼睛检测器;
string fDetectorPath= Haar scade _ front alface _ alt。XML ;
人脸检测器。load(fDetectorPath);
string eDetectorPath= Haar scade _ eye _ tree _ glasses。XML ;
眼睛_探测器。load(eDetectorPath);
向量矩形面;
Mat imgSrc=myImg
马特伊姆格雷
cvtColor(imgSrc,imgGray,CV _ RGB 2 gray);
均衡器(imgGray,img gray);
人脸检测器多尺度(imgGray,faces,1.1,2,0 CV_HAAR_SCALE_IMAGE,Size(30,30));
for(int I=0;我面对。size();我)
点中心(面【我】。x面[我].宽度* 0.5,面[我].y面[我].高度* 0.5);
椭圆(imgSrc,中心,大小(faces[i]).宽度* 0.5,面[我].高度* 0.5),0,0,360,标量(255,0,255),4,8,0);
mat face ROI=img gray(faces[I]);
矢量直眼;
眼睛_探测器。检测多尺度(人脸ROI,眼睛,1.1,2,0 CV_HAAR_SCALE_IMAGE,Size(30,30));
for(int j=0;j眼。size();j)
点中心(面【我】。x眼[j]的缩写.x眼[j]的缩写.宽度* 0.5,面[我].y眼[j]的缩写.y眼[j]的缩写.高度* 0.5);
int radius=cvRound((eyes[j].眼睛宽度[我].高度)* 0.25);
圆圈(imgSrc,圆心,半径,标量(255,0,0),4,8,0);
Mat imgDst=imgSrc
myQImg=QImage((const unsigned char *)(img dst。data)、imgDst.cols、imgDst.rows、QImage:Format _ RGB 888);
img show();
void主窗口:on _ detect button _ clicked()
imgProc();
4.用户界面部分:
代码如下:
?可扩展标记语言版本=1.0 编码=UTF八号?
用户界面版本=4.0
类主窗口/类
widget name=MainWindow
属性名称=几何
矩形
x 0 /x
y 0 /y
宽度800/宽度
身高600/身高
/rect
/属性
属性名=windowTitle
字符串主窗口/字符串
/属性
小部件名称=centralWidget
小部件名称=viewLabel
属性名称=几何
矩形
x 30 /x
10日元/年
宽度401/宽度
身高541/身高
/rect
/属性
属性名称=文本
字符串/
/属性
/小部件
widget name=detectPushButton
属性名称=几何
矩形
x 630 /x
380日元/年
宽度101/宽度
身高41/身高
/rect
/属性
属性名=字体
字体
点数14/点数
/font
/属性
属性名称=文本
线识别/字符串
/属性
/小部件
/小部件
widget name=menuBar
属性名称=几何
矩形
x 0 /x
y 0 /y
宽度800/宽度
身高17/身高
/rect
/属性
/小部件
widget name=mainToolBar
属性名=toolBarArea
枚举TopToolBarArea/枚举
/属性
属性名=toolBarBreak
布尔假/布尔
/属性
/小部件
widget name=statusBar/
/小部件
布局默认间距=6 边距=11/
资源/
连接/
/ui
以上是部分夸脱关于功能优化的部分,希望通过这些文章能够使大家的夸脱软件更加美观和完美!
希望能帮助到大家,感谢大家支持~( ̄ ̄~)~
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。