前言

这是一篇以“踩坑”为驱动的文章,如果直接使用pip install dlib安装,那么就会引用到对C++编译的Cmake和boost,如果还使用了win系统,还会涉及到visual studio和winSdk等各个方面,以及各种库的版本问题。显然上述南辕北辙。如果在python环境下涉及到库的安装最好使用已经编译的包*.whl,这种方式是较为合理的,也很简洁。

1.dlib简介

Dlib是一个现代化的C ++工具箱,其中包含用于在C ++中创建复杂软件以解决实际问题的机器学习算法和工具。它广泛应用于工业界和学术界,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。Dlib的开源许可证 允许您在任何应用程序中免费使用它。详情见文末所附内容

2.获取渠道

这是官方的下载通道https://pypi.org/project/dlib/#files,值得注意的是需要下载对应自己python版本的包。

个人渠道dlib-19.21.99-cp38-cp38-win_amd64.whl适用于py3.8

个人渠道dlib-19.6.0-cp36-cp36m-win_amd64.whl适用于py3.6

3.python安装whl

在与此文件夹同级下打开cmd  执行pip install *.whl即可。

4.dlib的使用目标检测

dlib 中的函数 find_candidate_object_locations() 能够识别指定的图片,并把可能存在目标的对象找出来。实现方法基于 Koen van de Sande 的论文 Segmentation as Selective Search for Object Recognition by Koen E. A. van de Sande, et al.。这个方法可以快速找到候选目标的区域,我们可以使用这些区域进行后续操作。

示例代码 如下:

import dlibimage_file = 'test1.jpg'
img = dlib.load_rgb_image(image_file)# Locations of candidate objects will be saved into rects
rects = []
dlib.find_candidate_object_locations(img, rects, min_size=500)print("number of rectangles found {}".format(len(rects)))
for k, d in enumerate(rects):print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(k, d.left(), d.top(), d.right(), d.bottom()))

代码中, 函数 load_rgb_image(...) 接受一个文件名称,然后返回 numpy 数组对象,这个作为 find_candidate_object_locations(...) 函数的输入。函数 find_candidate_object_locations(...) 第二个参数 rects 为列表,保存找到候选推向所在的区域,第三个参数 min_size 表示找到的区域大小不应该小于指定的像素值。

:详细特点

文档丰富

  1. 与许多开源项目不同的是,Dlib为每个类和功能提供了完整和精确的文档。同时它还有调试模式,可以帮助你检查使用某个函数的先决条件。启用此功能后,它将捕获由于错误地调用函数或以不正确的方式使用对象而导致的绝大多数错误。
  2. 提供了许多示例程序(非常有用的示例!)
  3. 我认为文档是函数库最重要的部分。因此,如果您发现任何未记录的内容,不清楚或已过时的文档,请告诉原作者,作者会及时修复它。

高质量的广泛兼容的代码

  1. 好的单元测试覆盖率。代码的单元测试行与库代码行之比约为1到4。
  2. 该库在MS Windows,Linux和Mac OS X系统上定期进行测试。事实上,它可以在任何POSIX系统上运行,并且已经在Solaris,HPUX和BSD上使用。
  3. 没有其他软件包依赖。只需要通过开箱即用的操作系统提供的底层API。
  4. 在使用库之前,不需要安装或配置步骤。有关详细信息,请参阅 如何编译页面。
  5. 所有操作系统特定的代码都被隔离在尽可能小的操作系统抽象层中。库的其余部分要么在OS抽象层之上分层,要么是纯ISO标准C ++。

机器学习算法

  1. 深度学习Deep Learning
  2. 传统的基于SMO的支持向量机用于分类(classification) 和 回归(regression)
  3. 用于大规模分类 和回归的Reduced-rank methods
  4. 用于分类 和回归的推荐相关向量机(Relevance vector machine)
  5. 通用多类分类(multiclass classification)工具
  6. 一个多类SVM(Multiclass SVM)
  7. 解决与结构支持向量机(structural support vector machines)相关的优化问题的工具 。
  8. 用于序列标记(sequence labeling)的结构SVM工具
  9. 用于解决分配问题(assignment problems)的结构SVM工具
  10. 用于图像中物体检测(object detection)的结构SVM工具以及用于物体检测的更强大(但更慢)的深度学习工具(deep learning tools for object detection)。
  11. 用于标记图中节点的结构SVM工具(labeling nodes)
  12. 一个大规模的SVM-Rank实现
  13. 在线核RLS回归(kernel RLS regression)算法
  14. 在线SVM分类(SVM classification)算法
  15. 半确定度量学习(Semidefinite Metric Learning)
  16. 在线核化的质心估计器(centroid estimator) /新颖检测器和离线支持矢量一类分类器(one-class classification)
  17. 聚类算法:线性 或核k-means, Chinese Whispers聚类和 Newman聚类。
  18. 径向基函数网络(Radial Basis Function Networks)
  19. 多层感知器(Multi layer perceptrons)

数值计算算法

  1. 使用表达式模板技术实现的快速矩阵对象,并且在可用时能够使用BLAS和LAPACK库。
  2. 为矩阵对象定义了许多线性代数和数学运算,如 奇异值分解, 转置, 三角函数等。
  3. 使用共轭梯度, BFGS和 L-BFGS 技术的通用非约束非线性优化算法
  4. Levenberg-Marquardt用于求解非线性最小二乘问题
  5. 通过BOBYQA算法进行箱约束无导数优化
  6. 的的实现割平面算法优化(Optimized Cutting Plane Algorithm)
  7. Several quadratic program solvers
  8. 用于求解最优分配和 最小切割/最大流动问题的组合优化工具 以及用于查找most probable parse tree的CKY算法
  9. 一个大整数对象
  10. 一个随机数对象
  11. 图形模型推理算法
  12. 加入树算法在贝叶斯网络中进行精确推理。
  13. 吉布斯采样马尔可夫链monte carlo算法用于贝叶斯网络中的近似推断。
  14. 在链式结构, Potts或 一般因子图中执行MAP推断的例程 。

图像处理

  1. 用于读取和 保存常见图像格式的例程。
  2. 各种像素类型之间的自动颜色空间转换
  3. 常见的图像操作,如边缘检测和形态学操作
  4. SURF, HOG和FHOG 特征提取算法。(可惜木有SIFT和ORB)
  5. 用于图像中的对象检测的工具,包括 正面人脸检测和 对象姿势估计。
  6. 高质量的人脸识别

线程

  1. 该库提供了一个可移植且简单的线程API
  2. 用于线程间和进程间通信的消息传递管道
  3. 一个计时器对象,能够生成按时间间隔排列的事件
  4. 线程对象
  5. 线程函数
  6. 循环并行
  7. 面向未来的thread_pool

网络通信

  1. 该库提供了一个可移植且简单的TCP套接字API
  2. 帮助您制作基于TCP的服务器的对象
  3. iostream和streambuf 对象,使TCP套接字能够与C ++ iostreams库互操作
  4. 一个简单的HTTP服务器对象,可用于将Web服务器嵌入到应用程序中
  5. 用于线程间和进程间通信的消息传递管道
  6. 用于使用批量同步并行(BSP)计算模型实现算法的工具

图形用户界面

  1. 该库提供了一个便携且简单的核心GUI API
  2. 在核心GUI API的基础上实现了许多小部件
  3. 与许多其他GUI工具包不同,整个dlib GUI工具包是线程安全的

数据压缩和完整性检查算法

  1. CRC 32对象
  2. MD5功能
  3. 代表数据压缩 算法部分的各种抽象对象。包括许多形式的PPM算法。

测试

  1. 在流行的Java日志记录器log4j之后的线程安全日志记录器对象
  2. 模块化的单元测试框架
  3. 各种断言宏对测试前置条件很有用

其他通用功能

  1. 一个类型安全的对象,用于在大小字节排序之间进行转换
  2. 一个命令行解析器,能够使用各种参数和选项分析和验证命令行
  3. 一个XML解析器
  4. 可以执行base64转换的对象
  5. 许多容器类
  6. 序列化支持
  7. 许多实现不同内存池策略的内存管理器对象
  8. 一个工具,可以让您轻松地从MATLAB调用C ++

关于python集成dlib相关推荐

  1. 使用OpenCV,Python和dlib进行眨眼检测及计数

    前三篇博客学习了 windows10+Python3.7安装dlib库进行面部标志识别 python dlib实现面部标志识别 使用python,dlib,OpenCV提取眼睛,鼻子,嘴唇及下颌 这篇 ...

  2. python基于dlib的face landmarks

    python基于dlib的face landmarks python使用dlib进行人脸检测与人脸关键点标记 Dlib简介: 首先给大家介绍一下Dlib Dlib是一个跨平台的C++公共库,除了线程支 ...

  3. python常用的集成开发环境和编辑器有哪些_常用的几款Python集成开发环境或者编辑器详解...

    Python3开发常用工具一:为什么使用开发工具? 在Python3教程之<安装>中,我们已经安装了Python开发环境,但是在终端里执行相关命令始终是不能开发大型项目的,并且对写过的代码 ...

  4. python自带的集成开发环境是什么-常用的几款Python集成开发环境或者编辑器详解...

    Python3开发常用工具一:为什么使用开发工具? 在Python3教程之<安装>中,我们已经安装了Python开发环境,但是在终端里执行相关命令始终是不能开发大型项目的,并且对写过的代码 ...

  5. python人脸识别毕业设计-Python基于Dlib的人脸识别系统的实现

    之前已经介绍过人脸识别的基础概念,以及基于opencv的实现方式,今天,我们使用dlib来提取128维的人脸嵌入,并使用k临近值方法来实现人脸识别. 人脸识别系统的实现流程与之前是一样的,只是这里我们 ...

  6. 2转单通道 python_机器学习用Python—Python集成工具包Anaconda安装步骤

    近几年来,机器学习以及深度学习的研究异常火热,机器学习和深度学习也逐渐渗透到各个领域,当然,脑科学领域也不例外.利用机器学习和深度学习技术解决脑科学领域中的问题,成为目前最为火热的研究方向之一.而神经 ...

  7. python开发环境比较好_python开发环境比较好,python 集成开发环境哪个好

    python 集成开发环境哪个好 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提 ...

  8. python运行程序的快捷键_在Python集成开发环境中,可使用快捷键()运行程序。...

    在Python集成开发环境中,可使用快捷键()运行程序. 更多相关问题 如何理解创新能力测试与创新能力的关系? 直埋线路与埋式电力电缆电压<35kv平行时最小间距为(). 放射性物品装卸作业时, ...

  9. anaconda python_机器学习用Python—Python集成工具包Anaconda安装步骤

    近几年来,机器学习以及深度学习的研究异常火热,机器学习和深度学习也逐渐渗透到各个领域,当然,脑科学领域也不例外.利用机器学习和深度学习技术解决脑科学领域中的问题,成为目前最为火热的研究方向之一.而神经 ...

最新文章

  1. android发短信乱码,android 音乐信息乱码处理
  2. PMCAFF微课堂 | 京东零售平台资深PM深度揭秘京东的订单体系
  3. 一维卷积filter_面试题:CNN的卷积核是单层的还是多层的?
  4. 深入react技术栈(12):组件内通信
  5. maven配置以及设置国内镜像
  6. python爬虫爬取合肥工业大学校园新闻
  7. 职场的头几年决定你的一生,你hold住吗?
  8. 访客预约管理4大难点,帮你逐一破解
  9. FCC算法和数据结构 项目实战:罗马数字转换器
  10. 大数据技术发展影响因素有哪些?
  11. 复古汉字_复古和复古网页设计给您的启发
  12. 计算机一级ppt定位,课件全国计算机一级基础知识.ppt
  13. 2023年软考中级网络工程师考试大纲
  14. Wordpress 的新版块编辑器 古腾堡(Gutenberg)
  15. 网页后缀php,网页后缀php有什么含义
  16. c#流程控制语句简单经典应用
  17. PS 基础知识 .pat文件如何使用
  18. 妈!他还没回来,一定有别的女人了!
  19. IPC连接错误号分析
  20. 2023年Java面试题_Redis

热门文章

  1. js时间戳与日期格式的相互转换
  2. 了解数字隔离器安全使用的限制值
  3. 相关系数和显著性检验
  4. Android之——Surface、SurfaceView与SurfaceHolder.Callback初探
  5. SurfaceHolder的setType类型
  6. gogs安装与说明(docker)
  7. Mac pycharm运行文件 左下角提示error=2, No such file or director
  8. 向mysql数据库发送指令_常用的MySQL数据库命令大全
  9. 赋能实体成区块链重中之重 供应链、溯源和数据等迎来政策红利期
  10. python有哪些用途-python的用途有哪些?