Win10环境python3.7安装dlib模块趟过的坑

好的。首先,需要明确一点,dlib模块对于Windows系统用户来说,安装起来相对来说比较麻烦。以下是Win10环境下python3.7安装dlib模块的攻略,具体步骤如下:

步骤一:安装CMake

dlib官网上需要下载CMake工具。下载地址:https://cmake.org/download/

这里选择 cmake-3.19.1-windows-x86_64.msi 版本,下载后进行安装。

步骤二:安装Visual Studio build tools

dlib没有Windows环境的wheel包,因此需要安装Visual Studio build tools进行本地编译。

打开Visual Studio官网,下载对应版本的Visual Studio build tools即可。这里选择了 Visual Studio Build Tools 2019,下载后进行安装。

步骤三:安装Boost

(1)在dlib官网上选择下载 Boost C++ Libraries 的源代码,并解压到一个文件夹中,例如 E:\libraries\boost_1_70_0

(2)打开Vistual Studio x64 Native Tools Command Prompt,切换到解压后的Boost源代码目录下,运行以下命令:

.\bootstrap.bat
.\b2

注意: 这里的命令使用了当前已安装的Visual Studio build tools版本。如果你使用其他版本的Visual Studio build tools,那么这里的命令也需要作出相应的调整。

步骤四:安装dlib

(1)确保已安装Python,推荐使用conda载入多个版本的Python,在命令行中运行以下命令安装依赖包:

conda install numpy pandas matplotlib

(2)在命令行中运行以下命令,安装dlib:

pip install dlib==19.18.0 --verbose --no-cache-dir --install-option= --fast-build --no-use-pep517

注意: dlib 需要特别慎重,建议在创建虚拟环境后进行安装。

这里给出一个使用dlib训练图像分类器的示例,代码如下:

import dlib
import cv2

# 加载训练数据
svm = cv2.ml.SVM_create()
svm.setType(cv2.ml.SVM_C_SVC)
svm.setKernel(cv2.ml.SVM_LINEAR)
svm.setTermCriteria((cv2.TERM_CRITERIA_MAX_ITER, 100, 1e-6))

# 加载图像数据并进行训练
data = dlib.get_frontal_face_detector() # 加载人脸检测器的数据
print('begin training')
for i in range(1, 41):
    # 加载当前训练数据集
    face_folder = 'faces/s' + str(i) + '/'

    for j in range(1, 11):
        # 加载当前图像
        image_path = face_folder + str(j) + '.pgm'
        img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
        img = cv2.resize(img, (32, 32))
        hog = dlib.vector_to_matrix(dlib.extract_image_chip(img, dlib.rectangle(0, 0, 32, 32)))

        # 训练模型
        svm.train(hog, cv2.ml.ROW_SAMPLE, [i])

另外还有一个使用dlib进行人脸检测的示例,代码如下:

import dlib
import cv2

detector = dlib.get_frontal_face_detector() # 加载人脸检测器

image = cv2.imread('test.jpg')

# 缩小图像,加快计算速度
small_image = cv2.resize(image, (int(image.shape[1]/2), int(image.shape[0]/2)))

# 将图像从BGR格式转为RGB格式,因为dlib检测器只支持RGB格式
rgb_image = cv2.cvtColor(small_image, cv2.COLOR_BGR2RGB)

# 对图像进行人脸检测
dets = detector(rgb_image, 1)

# 遍历检测出的人脸位置
for i, d in enumerate(dets):
    cv2.rectangle(small_image, (d.left(), d.top()), (d.right(), d.bottom()), (0, 255, 0), 2)

cv2.imwrite('result.jpg', small_image)

希望对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Win10环境python3.7安装dlib模块趟过的坑 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • python后端开发工程师考证试题(小结)

    Python后端开发工程师考证攻略 1. 考试结构 Python后端开发工程师考试共分为两个部分:理论考试和编程实践考试。理论考试包括选择题和简答题,主要考察知识点的掌握程度;编程实践考试主要考察应试者的编程能力和解决问题的能力。 2. 基础知识准备 考试主要考察Python的基础知识和Web开发相关技术。建议考生掌握以下知识点: 2.1 Python基础知…

    http 2023年5月13日
    00
  • 关于python的bottle框架跨域请求报错问题的处理方法

    关于Python的Bottle框架跨域请求报错问题的处理方法,具体的攻略如下: 问题描述 使用Bottle框架编写Web应用时,如果使用AJAX向不同域名或端口号的服务器发起请求,会出现跨域请求报错的问题。错误信息通常如下所示: Access to XMLHttpRequest at ‘http://example.com:9000/’ from origi…

    http 2023年5月13日
    00
  • mybatis @InsertProvider报错问题及解决

    下面是关于“mybatis @InsertProvider报错问题及解决”的完整攻略: 问题描述 当使用MyBatis框架中的@InsertProvider注解时,有时会出现以下报错信息: org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (com.ex…

    http 2023年5月13日
    00
  • 什么是HTTPS加密算法?

    下面我将详细讲解HTTPS加密算法。 什么是HTTPS加密算法? HTTPS(Hypertext Transfer Protocol Secure)是一种基于TLS/SSL协议的HTTP通信协议,是HTTP的安全版。 它通过使用TLS/SSL协议,对传输的数据进行加密与解密,保证数据在传输过程中不被篡改,保证数据的机密性和完整性,防止数据被窃取和劫持。 HT…

    云计算 2023年4月27日
    00
  • 关于TypeScript的踩坑记录

    关于TypeScript的踩坑记录 背景介绍 TypeScript是一门由微软开发的开源编程语言,是JavaScript的一个超集,即所有的JavaScript代码都是合法的TypeScript代码。它通过添加静态类型和其他特性,使得JavaScript变得更加健壮、易于维护和开发。在前端开发中,越来越多的公司将TypeScript作为首选语言,因此在使用T…

    http 2023年5月13日
    00
  • HTTP的重定向机制是什么?

    HTTP重定向机制是指,服务器在收到客户端请求后,返回的响应中包含指示客户端重新请求其他URI的状态码和URI地址。当客户端收到重定向响应后,会自动发送新的请求到重定向的URI地址,完成整个页面的加载。 HTTP重定向可分为两类:客户端重定向和服务端重定向。 客户端重定向是指,在客户端浏览器内部实现的重定向,不会向服务器发送新的请求。例如,使用JavaScr…

    Http网络协议 2023年4月20日
    00
  • Java一些常见的出错异常处理方法总结

    Java一些常见的出错异常处理方法总结 在Java编程中,出现异常是很常见的情况。为了保证程序的稳定性和可靠性,我们对异常进行处理。本文将结一些常见的出错异常处理方法,包括try-catch语句、throws关键字和finally语句。 try-catch语句 try-catch语句是Java中最常用的异常处理方法之一。它的基本语法如下: try { // …

    http 2023年5月13日
    00
  • 解决vue.js this.$router.push无效的问题

    当使用Vue.js的时候,我们通常会使用this.$router.push()方法去实现路由跳转。然而有时候,在使用这个方法时会出现无效的情况。这里提供一些可能会引发这种问题的原因和相应的解决方法。 检查路由列表 当this.$router.push()无效时,首先要检查路由列表是否正确。我们可以打开浏览器的控制台,查看路由实例的options.routes…

    http 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部