Qt平台下dlib人脸检测

一、dlib

Dlib是一个机器学习的C++库,包含了许多机器学习常用的算法。下载:http://www.dlib.net/ml.html       

 

二、安转qt,设置环境变量,用qt自带的mingw工具编译dlib库

工具路径:

设置环境变量:

三、dlib

下载:http://dlib.net/files/

 

               解压,并新建安装目录dlib

 

四、cmake

下载:https://cmake.org/download/

           

           

             使用cmake生成Makefile:

             

Configured点击两次后,点击Generate,在安转目录下生成Makefile:

五、编译

 

          进入安转目录下,编译:

完成编译:

六、安装dlib

安装完成:

七、测试

参考G:\dlib-19.7\examples\face_detection_ex.cpp例子,新建qt工程:

 

编译运行:

八、源码

.pro

 

QT       +=coregui
QMAKE_CXXFLAGS+=-std=c++0x 
greaterThan(QT_MAJOR_VERSION,4):QT+=widgets 
TARGET=dlibTest
TEMPLATE=app 
SOURCES+=main.cpp\
    mainwindow.cpp 
HEADERS  +=mainwindow.h 
FORMS  +=mainwindow.ui 
LIBS+=$$PWD/dlib/lib/libdlib.a 
INCLUDEPATH+=$$PWD/dlib

 

 

mainwindow.cpp:

 

#include"mainwindow.h"
#include"ui_mainwindow.h"
#include<dlib/image_processing/frontal_face_detector.h>
#include<dlib/gui_widgets.h>
#include<dlib/image_io.h>
#include<dlib/image_processing.h>
#include<iostream> 
#include<QDebug>
#include<QFileDialog>
#include<QString>
#include<QTextCodec>
#include<QImage>
#include<QPainter>
usingnamespacedlib;
MainWindow::MainWindow(QWidget*parent):
    QMainWindow(parent),
    ui(newUi::MainWindow)
{
    ui->setupUi(this);
} 
MainWindow::~MainWindow()
{
    deleteui;
}
voidMainWindow::on_pushButton_clicked()
{
    QStringimgName=QFileDialog::getOpenFileName(this,tr("File"),tr("./"),tr("ImageFile(*.png*.jpg)"));
    if(imgName.isNull())return;
    QTextCodec*code=QTextCodec::codecForName("gb2312");
    std::stringname=code->fromUnicode(imgName).data();
        //--------------------------------------------------
   QImage*labImg=newQImage;
   if(!(labImg->load(name.data())))
   {
      deletelabImg;
      return;
   }
   QPixmappixmap=QPixmap::fromImage(*labImg);
   QPainterpainter(&pixmap);
   painter.setPen(Qt::red);
   //--------------------------------------------------
    frontal_face_detectordetector=get_frontal_face_detector();
    dlib::array2d<unsignedchar>img;
    load_image(img,name.data()); 
    dlib::pyramid_up(img);
    std::vector<dlib::rectangle>dets=detector(img); 
    dlib::rectanglemyRect;
    intfaceCount=dets.size();
    ui->textBrowser->append(QString::number(faceCount));
    for(int32_ti=0;i<faceCount;i++)
    {
      myRect=dets.at(i);
      ui->textBrowser->append("x:"+QString::number(myRect.left()/2));
      ui->textBrowser->append("y:"+QString::number(myRect.top()/2));
      ui->textBrowser->append("width:"+QString::number(myRect.width()/2));
      ui->textBrowser->append("height:"+QString::number(myRect.height()/2)); 
      painter.drawRect(myRect.left()/2,myRect.top()/2,myRect.width()/2,myRect.height()/2);
    }
    ui->label->setPixmap(pixmap);
}

 

 

 

 

 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拥抱藍天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值