实验室人员管理系统开发(Qt+opencv+sql)前
1引言
一直想学习一下Qt开发上位机程序,之前利用Qt Creator做过简单的网络调试助手,了解到Qt软件开发的基本流程以及Qt Creator的基本使用。最近想做一个人脸识别的上位机,学习一下opencv图像处理。因此想到用Qt Creator,并在Qt中使用数据库搭建一个实验室人员管理系统。(此博客主要是记录一下学习过程,便于以后查看)
1.1系统介绍
上位机界面分为数据输入区、操作区、数据库数据显示区。操作人员可以通过上位机对数据库中的数据进行录入、修改、删除、查找(支持图像识别)、导出等操作。数据库中实验室人员信息数据可以通过手工和图像识两种方式录入。
1.2软件安装
Qt5.14.2 MSVC2017 配置opencv_contrib4.3.0扩展库
链接: [https://blog.csdn.net/Call_me_A_Bo/article/details/108858239).
视频资源:https://www.bilibili.com/video/BV1tp4y1i7EJ
2开发实现
2.1图像识别
OpenCV(开源计算机视觉库),实现了图像处理和计算机视觉方面的很多通用算法,是计算机视觉领域最有力的研究工具之一。OPencv包括:图像处理和视觉算法(CV)、机器学习库(ML)、图像和视频输入/输出库(HighGUI)、基本结构和算法,XML支持,绘图函数(CXCORE)以及CVAUx模块。
2.1.1人脸检测
opencv 提供了很多已经训练好的分类器:人脸分类器,眼睛分类器,嘴部分类器等。可以看出这些分类器都是基于Haar特征的cascade分类器(classifiers)。
本系统选用的人脸分类器haarcascade_frontalface_alt.xml,将分类器放入系统根目录中,便于调用。人脸检测代码段如下:`。
if (!face_cascade.load("F:/QT/prigect/face/untitled/haarcascade_frontalface_alt.xml"))//加载人脸分类器
{
qDebug("Load haarcascade_frontalface_alt failed!");
return;
}
face_cascade.detectMultiScale(frame, faceRect, 1.1, 3, 0 | CASCADE_SCALE_IMAGE, Size(180, 180));
if(!faceRect.empty())
{
for (size_t i = 0; i < faceRect.size(); i++)
{
num++;
if(num==11)
num=1;
qDebug("OK");
rectangle(frame, faceRect[i], Scalar(0, 255, 0)); //用绿色矩形画出检测到的位置
FaceRoI=frame(faceRect[i]);
cv::resize(FaceRoI,face_test,Size(92, 112));
str=str.sprintf("%d.jpg",num) ;
str1=str.toStdString();
cv::imwrite(str1,face_test);
}
}
else
qDebug("no get");
cv: