Learnning Dlib(五) Dlib face landmark detection

2023-10-31

官方例子
人脸模型68点绘制,非常非常慢,需要优化。

下载模型

下载后放入lib 目录下
这里写图片描述

代码如下

@interface ViewController ()
{
    shape_predictor sp;
    NSString *imagePath;
}
- (void)viewDidLoad {
    [super viewDidLoad];

    imagePath = [[NSBundle mainBundle] pathForResource:@"hao" ofType:@"jpg"];
    self.imageView.image = [UIImage imageWithContentsOfFile:imagePath];

    NSString *modelFileName = [[NSBundle mainBundle] pathForResource:@"shape_predictor_68_face_landmarks" ofType:@"dat"];
    std::string modelFileNameCString = [modelFileName UTF8String];
    deserialize(modelFileNameCString) >> sp;
}
- (void)faceDetector{

    std::string fileName = [imagePath UTF8String];

    //creat image
    array2d<rgb_pixel> img;

    frontal_face_detector detector = get_frontal_face_detector();

    // And we also need a shape_predictor.  This is the tool that will predict face
    // landmark positions given an image and face bounding box.  Here we are just
    // loading the model from the shape_predictor_68_face_landmarks.dat file you gave
    // as a command line argument.

        //load ios image
    load_image(img,fileName);

    // Make the image bigger by a factor of two.  This is useful since
    // the face detector looks for faces that are about 80 by 80 pixels
    // or larger.  Therefore, if you want to find faces that are smaller
    // than that then you need to upsample the image as we do here by
    // calling pyramid_up().  So this will allow it to detect faces that
    // are at least 40 by 40 pixels in size.  We could call pyramid_up()
    // again to find even smaller faces, but note that every time we
    // upsample the image we make the detector run slower since it must
    // process a larger image.
    pyramid_up(img);

    // Now tell the face detector to give us a list of bounding boxes
    // around all the faces in the image.
    std::vector<rectangle> dets = detector(img);
    NSLog(@"人脸个数 %lu",dets.size());//检测到人脸的数量

    if (dets.size() == 0) {
        return;
    }

//    // draw Rectangle on face
//    for (int i = 0;i < dets.size(); i++) {
//        draw_rectangle(img,dets[i],rgb_pixel(0, 255, 255));
//    }


    std::vector<full_object_detection> shapes;

    for (unsigned long j = 0; j < dets.size(); ++j)
    {
        full_object_detection shape = sp(img, dets[j]);

        // and draw them into the image (samplebuffer)
        for (unsigned long k = 0; k < shape.num_parts(); k++) {
            dlib::point p = shape.part(k);
            // p 点的直径 3 参数为原点直径 rgb_pixel 颜色
            draw_solid_circle(img, p, 3, dlib::rgb_pixel(0, 255, 255));

        }
        std::cout << "number of parts: "<< shape.num_parts() << std::endl;
        std::cout << "pixel position of first part:  " << shape.part(0) << std::endl;
        std::cout << "pixel position of second part: " << shape.part(1) <<  std::endl;
        // You get the idea, you can get all the face part locations if
        // you want them.  Here we just store them in shapes so we can
        // put them on the screen.
        shapes.push_back(shape);
    }

    NSArray *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSString *documentsPath = [docPath objectAtIndex:0];
    documentsPath = [documentsPath stringByAppendingPathComponent:@"test.png"];
    const char *savePath = [documentsPath UTF8String];
    save_jpeg(img, savePath);
    self.imageView.image = [UIImage imageWithContentsOfFile:documentsPath];

    cout << "Hit enter to process the next image..." << endl;
    cin.get();


 }

一张脸
多张脸

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Learnning Dlib(五) Dlib face landmark detection 的相关文章

  • anconda 安装dlib

    pip install CMake pip install Boost 前面两个不知道有没有用 xff0c 我是直接安装了 pip install dlib 会直接报错 xff0c 所以要到网上下载whl文件来安装 xff0c 就可以了 用
  • python3.7成功安装dlib库(详解)

    1 先去下载dlib的安装包 xff0c 网址在这 xff0c 然后解压安装包 2 下载vs 我的vs版本是vs2017 如果没有先装上vs的要先装上喔 然后设置cl exe的环境变量 xff08 写入Path中 xff0c 不知道环境变量
  • android dlib 交叉编译

    继续趟NDK的坑 DLIB使用C 43 43 11的标准 但是使用gnustl static的时候 xff0c 有些c 43 43 11的特性是无法使用的 由于NCNN的库使用的是静态库 xff0c OPENCV xff0c OPENBLA
  • Dlib 通过NVIDIA的 CUDA 使用GPU

    使用工具列表 经过各种尝试 只有使用cudnn7这个版本 才能使人脸识别的net函数运行正常 如果有朋友能把其它版本跑正常 可以在下方评论区留言 win10 dlib 19 22 zip VS2019 cudnn 10 2 windows1
  • 基于Dlib进行人脸特征点检测的Python代码实现

    一 Python代码实现 import sys import os import glob import dlib import numpy as np import cv2 把imread中的路径修改为自己的图片路径 图片格式为jpeg格
  • 【OpenCV】中copyto()函数的使用方法理解

    使用copyTo函数可以得到一个复制的矩阵 A copyTo B 就可以得到和A一模一样的矩阵B 当然需要事先声明B copyTo还有一个重构函数copyTo B MASK 意思是可以得到一个附加掩膜MASK的矩阵B 3 加载掩模 必须是灰
  • 如何解决与 Windows 10 上安装 dlib 相关的问题?

    我正在尝试在 Windows 10 上为 python 3 7 安装 dlib 以进行人脸识别 我探索了几种方法 但遇到了错误 我尝试了以下步骤 使用 pip install cmake 安装了 cmake 这奏效了 从 Python 包索
  • 使用 dlib 进行狗脸检测 - 需要有关改进 recal 的建议

    我正在尝试使用 dlib 的猪金字塔检测器训练狗脸检测器 我使用哥伦比亚狗数据集 ftp ftp umiacs umd edu pub kanazawa CU Dogs zip 起初我的召回率为 0 但通过增加 C 值 我设法将训练集上的召
  • 无法在 Windows 10 和 Python 3.7 上安装 dlib

    我正在尝试在 Windows 10 上的 Anaconda Python 3 7 上安装 OpenCV dlib 我已经安装了 Visual studio 2015 作为先决条件以及 CMake 当我尝试在计算机上安装 dlib 时 出现以
  • Dlib(支持 GPU)无法正常工作,不确定?

    我的系统配置 Windows 10 Nvidia 940mx 2GB GDDR5 GPU 8GB RAM 第 8 代 i5 安装的软件 CUDA工具包9 0 cuDNN 7 1 4 在使用以下命令安装上述要求后 我已成功安装了具有 GPU
  • 如何修复 python `dlib` 错误:“在平面命名空间 '_png_do_expand_palette_rgb8_neon' 中找不到符号”?

    我收到错误 symbol not found in flat namespace png do expand palette rgb8 neon 尽管发生了错误dlib正在安装相关 Python 版本的软件包 我正在使用 VSCode 以防
  • DLib:train_shape_predictor_ex.cpp

    我正在尝试通过执行来训练 Dlib 的形状预测器train dlib shape predictor ex cpp http dlib net train shape predictor ex cpp html on 海伦数据集 http
  • OpenCV、dlib 地标旋转

    我是 OpenCV 和 dlib 的新手 我不确定我的设计是否正确 我想为 Android 手机编写一个 C 人脸检测器 它应该检测具有不同手机方向和旋转角度的人脸 当手机方向为纵向和横向时 让我们留下来 我正在使用 OpenCV 旋转 编
  • 在 OS X 上编译 dlib

    我尝试在 OS X 上的 Qt 项目中使用 dlib 因此 在这次尝试中我做了以下操作 在 dlib 根目录中 cd examples mkdir build cd build cmake cmake build config Releas
  • 是否可以像OpenCV一样在android中使用Dlib?

    好吧 我需要一个关于在 android 中使用 Dlib 的清晰网站或信息 我在网上搜索了一个使用 Dlib 的 Android 示例应用程序 但我仍然找不到 我仍然不确定我们是否可以使用android中的Dlib方法来生成 a文件 以便我
  • Visual Studio 2010中dlib库的使用

    我想寻求使用方面的帮助dlib http dlib net compile html对于我的小论文项目 具体来说 我需要使用 BOBYQA 优化例程 我正在用 C 语言在 MS Visual Studio 2010 Express 中编写该
  • dlib (setup.py) 循环的构建轮子

    尝试从 Ubuntu 安装 dlib 和face recognition 参考自https www learnopencv com install dlib on ubuntu https www learnopencv com insta
  • 使用cuda编译dlib

    我正在尝试用cuda编译dlib 我从这个 GitHub 链接克隆存储库https github com davisking dlib https github com davisking dlib然后尝试运行 python setup p
  • Dlib面部标志起始指数

    我正在使用 dlib 来获取面部标志点 我的问题是关于 索引 68 个地标的参考图是从 1 开始的 是dlib代码Dlib 面部标志 https github com davisking dlib blob master examples
  • 如何使用requirements.txt 在 Heroku python Web 应用程序中安装 Dlib?

    我构建了一个涉及机器学习的 Python Flask Web API 但在 Heroku 上部署它时遇到了很多挫折 问题是 我的应用程序依赖于 Dlib 一个库 我似乎找不到在我的 Heroku 服务器中安装的方法 我正在试图解决这个问题

随机推荐

  • keil遇到FCARM - Output Name not specified, please check 'Options for Target - Utilities'解决方法

    近期又开始复活学ARM 结果以前很容易就编译通过的事竟然出现意外 提示 FCARM Output Name not specified please check Options for Target Utilities 原因是加载文件时为了
  • Netty的客户端使用Socks5代理,netty-handler-proxy源码浅析

    目录 前言 使用 源码浅析 版本 目录结构 ProxyHandler Socks5ProxyHandler socks5代理服务 待续 前言 需求的出发点是这样 一个netty代理服务 里面有netty服务端 ServerBootstrap
  • 通用路由封装协议--GRE的简单配置

    基于华为设备简单配置GRE GRE 通用路由封装协议 一 GRE是什么 二 GRE有什么用 1 多协议本地网可以通过GRE隧道传输 2 与IPSec结合 保护组播数据 三 GRE怎么用 1 隧道接口 Tunnel接口 2 配置 参考 GRE
  • SpringBoot默认的8080端口在哪?

    配置文件中 点击port 进入到ServerProperties类 ServerProperties这个类中 读取配置文件server开头的配置 定位类文件所在位置 找到对应jar包的META INF下的json文件 端口默认值在json文
  • Spring最佳实践: 构建高效可维护的Java应用程序

    博主猫头虎 带您 Go to New World 博客首页 猫头虎的博客 面试题大全专栏 文章图文并茂 生动形象 简单易学 欢迎大家来踩踩 IDEA开发秘籍专栏 学会IDEA常用操作 工作效率翻倍 100天精通Golang 基础入门篇 学会
  • Spring 基础概念和核心思想

    目录 一 Spring 是什么 1 认识 loC 2 理解 Spring loC 3 DI 概念说明 一 Spring 是什么 我们通常所说的 Spring 指的是 Spring Framework Spring 框架 它是 个开源框架 有
  • 【廖雪峰python入门笔记】变量

    1 静态语言和动态语言中的变量表示 静态语言在定义变量时必须指定变量类型 如果赋值的时候类型不匹配 就会报错 例如Java是静态语言 赋值语句如下 int a 123 a是整数类型变量 a mooc 错误 不能把字符串赋给整型变量 和静态语
  • json-c编译及修改libjson.so动态库名称

    1 git clone https github com json c json c git 功能 获取源码 2 cd json c 功能 进入目录 3 autogen sh 功能 生成configure ac 再生成configure配置
  • 栅栏密码(Fence)——python解密

    简介 所谓栅栏密码 就是把要加密的明文分成N个一组 然后把每组的第1个字连起来 形成一段无规律的话 不过栅栏密码本身有一个潜规则 就是组成栅栏的字母一般不会太多 一般不超过30个 也就是一 两句话 实现 一般比较常见的是2栏的栅栏密码 比如
  • 算法训练营第三十九天(8.30)

    Leecode 123 买卖股票的最佳时机 III 123 买卖股票的最佳时机III 123 买卖股票的最佳时机III 题目地址 力扣 LeetCode 官网 全球极客挚爱的技术成长平台 题目类型 股票问题 class Solution p
  • 前端页面边距设置

    内边距 padding 边框到内容区的距离 padding top 上内边距 padding right 右内边距 padding bottom 下内边距 padding left 左内边距 也可以使用padding设置四个方向的值 pad
  • 现阶段游戏类型

    了解游戏类型 每一个游戏类型下所诞生的游戏产品侧重点略有不同 了解游戏类型并找到属于自己的产品定位 可以在后面的技术定位和实际开发时不至于走许多弯路 更重要的是 当所有参与开发的人员对产品的主要方向已经有了明确的概念时 产品所针对的用户群体
  • CentOS 7.2下Filebeat+Kafka+ELK生产部署(安全加固)

    01架构说明 在需要采集日志的服务器上部署Filebeat服务 它将采集到的日志数据推送到Kafka集群 Logstash服务通过input插件读取Kafka集群对应主题的数据 期间可以使用filter插 数据做自定义过滤解析处理 然后通过
  • Linux基础:如何切换终端

    1 在linux中可以使用命令来切换终端 终端中tty1为图形界面 剩余为命令行界面 2 切换终端的命令为 sudo chvt 2 在终端2中登录用户xu 此时使用who命令或者w命令查看当前系统用户 此时可以看到 终端1图形界面登录的是r
  • 区块链学习8:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名

    前往老猿Python博文目录 在Hyperledger Fabric区块链中 有背书节点进行背书 Hyperledger Fabric 使用背书策略来定义哪些节点需要执行交易 Hyperledger Fabric在区块链交易方面采取了一个新
  • iOS进阶面试题----经典10道

    所有的群都已到人数上限 本着 与时俱进 精神 建了个 iOS面试 公众号 大家扫码关注后 可直接发消息给我 iOS面试相关的问题我会尽量一一回复 OneV s Den在博客里出了10道iOS面试题 用他的话是 列出了十个应聘Leader级别
  • pytorch中mm()函数的用法

    x x mm self w x与w相乘 注 x必须是tensor 才可以应用该方法 参考链接 https blog csdn net genous110 article details 87801605
  • Web应用防火墙--规则防护

    一 什么是Web应用防火墙 Web应用防火墙对网站 APP的业务流量安全及合规性保护 对业务流量的识别恶意特征提取 分析识别出恶意流量并进行处理 将正常安全的流量回源到业务服务器 保护网站核心业务和数据安全 京东云Web应用防火墙的产品架构
  • 深度学习C语言——结构体

    不起眼 前言 结构体 结构体的声明 结构体变量的定义和初始化 结构体大小计算 枚举 联合 总结 前言 自定义类型连续剧 结构体 结构是一些值的集合 这些值称为成员变量 结构的每个成员是不同类型的变量 为什么要有结构体 比如说 描述一个学生时
  • Learnning Dlib(五) Dlib face landmark detection

    官方例子 人脸模型68点绘制 非常非常慢 需要优化 下载模型 下载后放入lib 目录下 代码如下 interface ViewController shape predictor sp NSString imagePath void vie