Linux下python与C++使用dlib实现人脸检测


Posted in Python onJune 29, 2018

python 与 C++ dlib人脸检测结果对比,供大家参考,具体内容如下

说明:

由于项目需求发现Linux下c++使用dlib进行人脸检测和python使用dlib检测,得到的结果出入比较大,于是写了测试用例,发现影响结果的原因有但不限于:

1.dlib版本不同(影响不大,几个像素的差别)
2.dlib 人脸检测中detector()第二个参数的设置测试结果如下:

Linux下python与C++使用dlib实现人脸检测

python

PDlib.py:

# -*- coding: utf-8 -*-

import sys
import cv2 
import dlib

from skimage import io
detector = dlib.get_frontal_face_detector()
win = dlib.image_window()

for f in sys.argv[1:]: 
  img = io.imread(f)

  dets = detector(img,1) #使用detector进行人脸检测

  for i, d in enumerate(dets):
    x = d.left()
    y = d.top()
    w = d.right()
    h = d.bottom()   
    cv2.rectangle(img, (x, y), (w, h), (0, 255, 0))
    print("({},{},{},{})".format( x, y, (w-x), (h-y)))

  win.set_image(img)
  io.imsave('./P_Dlib_test.jpg',img)

  #等待点击
  dlib.hit_enter_to_continue()

C++

CDlib.cpp:

#include <dlib/image_processing/frontal_face_detector.h>
#include <dlib/opencv.h>
#include "opencv2/opencv.hpp"
#include <iostream>

using namespace dlib;
using namespace std;

cv::Rect Detect(cv::Mat im)
{
  cv::Rect R;
  frontal_face_detector detector = get_frontal_face_detector();
  array2d<bgr_pixel> img; 
  assign_image(img, cv_image<uchar>(im));
  std::vector<rectangle> dets = detector(img);//检测人脸

  //查找最大脸
  if (dets.size() != 0)
  {
    int Max = 0;
    int area = 0;
    for (unsigned long t = 0; t < dets.size(); ++t)
    {      
      if (area < dets[t].width()*dets[t].height())
      {
        area = dets[t].width()*dets[t].height();
        Max = t;
      }
    }

    R.x = dets[Max].left();
    R.y = dets[Max].top();
    R.width = dets[Max].width();
    R.height = dets[Max].height();
    cout<<"("<<R.x<<","<<R.y<<","<<R.width<<","<<R.height<<")"<<endl;
  }
  return R;
}

int main(int argc, char** argv)
{
  if (argc != 2) {
    fprintf(stderr, "请输入正确参数\n");
    return 1;
  }  
  string path = argv[1];
  try
  {    
    cv::Mat src, dec;
    src = cv::imread(path);
    src.copyTo(dec);
    cv::cvtColor(dec, dec, CV_BGR2GRAY);
    cv::Rect box;
    box = Detect(dec);
    cv::rectangle(src, box, cv::Scalar(0, 0, 255), 1, 1, 0);    
    cv::imshow("frame", src);
    cv::imwrite("./C_Dlib_test.jpg", src);
    cv::waitKey(0);//等待建入 
  }
  catch (exception& e)
  {
    cout << e.what() << endl;
  }
}

项目编译及运行

python

运行脚本 python PDlib.py G:\DlibTest\data\bush.jpg

C++

  • 创建编译文件夹 mkdir cbuild
  • 切换到编译目录 cd cbuild
  • 生成makefile文件 cmake ..
  • 编译项目 make
  • 运行可执行文件 ./DlibTest G:\DlibTest\data\bush.jpg

Demo:点击下载

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的迭代器和生成器
Jul 29 Python
python文件操作相关知识点总结整理
Feb 22 Python
python实现图片文件批量重命名
Mar 23 Python
opencv python 傅里叶变换的使用
Jul 21 Python
对python3新增的byte类型详解
Dec 04 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
PyTorch中topk函数的用法详解
Jan 02 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 Python
python使用自定义钉钉机器人的示例代码
Jun 24 Python
Python实现画图软件功能方法详解
Jul 28 Python
Python函数式编程中itertools模块详解
Sep 15 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 #Python
Python数据持久化shelve模块用法分析
Jun 29 #Python
python 统计列表中不同元素的数量方法
Jun 29 #Python
python计算两个数的百分比方法
Jun 29 #Python
python统计字母、空格、数字等字符个数的实例
Jun 29 #Python
python中计算一个列表中连续相同的元素个数方法
Jun 29 #Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 #Python
You might like
咖啡与牛奶
2021/03/03 冲泡冲煮
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
JS实现简易图片自动轮播
2020/10/16 Javascript
Python实现统计单词出现的个数
2015/05/28 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
python2.7的编码问题与解决方法
2016/10/04 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
绝对令人的惊叹的CSS3折叠效果(3D效果)整理
2012/12/30 HTML / CSS
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
端午节演讲稿
2014/05/23 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
高中班长竞选稿
2015/11/20 职场文书
初一语文教学反思
2016/03/03 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
话题作文之自信作文
2019/11/15 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python