github:https://github.com/eitail/Face_Recognition
参考博客:
人脸识别实战之用QT做点事(二):做一个人脸检测界面 有一些类似
OpenCV haarcascade_frontalface_alt2.xml人脸检测测试 detectMultiScale()函数介绍
Qt Creator 窗体控件自适应窗口大小布局 layout
OpenCV&Qt学习之四——OpenCV 实现人脸检测与相关知识整理 【推荐看一下】
这是一个简单的人脸识别代码,适合初学者研究,开发者使用的是Ubuntu系统,QT,以及Opencv实现的功能。
由于是刚接触qt,所以只尝试做了一些小修改:
1.原本的视频处理用imshow返送,这样结束程序后,还需要手动关闭,比较麻烦,改成了setPixmap返送至ui->label
2.增加了closeCamera按钮,修改后closeCamera后可再次openCamera打开视频
3.做了一个简单的grid布局,三个视频通道(scale=0.5),两个按钮
4.原图改为灰度图后,通道数减少了,QImage::Format_RGB888 =》 QImage::Format_Indexed8
从左到右依次是:原图、灰度图、直方图均衡化
代码是直接git的,修改掉的不需要的部分我都注释掉了
mainwindow.h
/*------------------------------------------------- * * Project created by QtCreator 2017-11-03T01:20:33 * * author:Leo * * url:http://www.linuxkiss.com * -------------------------------------------------*/ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QDebug> #include <opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <cv.h> #include <iostream> #include <stdio.h> using namespace std; using namespace cv; namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: void Face_recognition(); void Pic2Gray(Mat camerFrame,Mat &gray); private: Ui::MainWindow *ui; string face_cascade_name; CascadeClassifier face_cascade; VideoCapture capture; private slots: void openCamara(); void closeCamera(); }; #endif // MAINWINDOW_H