《计算机视觉》—— 基于dlib库的人检检测

文章目录

  • 一、dlib库的安装
    • 1. 通过PyCharm的Settings安装
    • 2. 通过Anaconda安装(适用于Windows等操作系统)
    • 3. 通过命令行安装
    • 4.懒人安装
  • 二、基于dlib库的人检测
    • 1.对图像进行人脸检测
    • 2.打开电脑摄像头,检测人脸

一、dlib库的安装

在PyCharm中,dlib库是一个强大的工具,尤其适用于机器学习和计算机视觉任务,如人脸识别等。以下是在PyCharm中安装和使用dlib库的详细指南:

1. 通过PyCharm的Settings安装

  • 打开PyCharm,并创建一个新的项目或打开现有项目。
  • 在菜单栏中选择“File”->“Settings”。
  • 在弹出的窗口中,选择“Project Interpreter”选项卡。
  • 点击右上角的加号按钮,搜索并安装dlib库。

2. 通过Anaconda安装(适用于Windows等操作系统)

  • 下载并安装Anaconda(https://www.anaconda.com/products/individual)。
  • 创建一个虚拟环境:conda create -n virenv(其中virenv是虚拟环境名)。
  • 激活虚拟环境:conda activate virenv
  • 在虚拟环境中安装dlib:conda install -c conda-forge dlib
  • 安装完成后,在PyCharm中配置该虚拟环境的Python解释器。

3. 通过命令行安装

  • 打开PyCharm的终端窗口,或使用系统的命令行工具。
  • 输入命令pip install dlib进行安装。
  • 注意:在安装dlib之前,可能需要先安装CMake和Boost库。这些依赖库的安装方法因操作系统而异,可以参考dlib官方文档中的安装指南(http://dlib.net/compile.html)。

4.懒人安装

  • 以下链接中提供了几种适应python版本的dlib库的.whl文件
    • 链接: https://pan.baidu.com/s/1s9spngkaTdl1IN4xFcYOEQ?
    • 提取码: 18qa
  • 下载与你python版本一致的.whl文件,并保存在一个文件夹下,进入这个文件夹下,在文件路径框内输入cmd,回车进入当前文件夹的终端
  • 输入 pip install + dlib库的.whl文件,回车即可安装
    • 如下图:
      在这里插入图片描述
      在这里插入图片描述

二、基于dlib库的人检测

1.对图像进行人脸检测

  • 以下代码中,我们将使用dlib库的人脸检测器来检测图像中的人脸,并在检测到的人脸周围绘制矩形框。

  • 完整代码:

    import cv2      # 导入opencv库
    import dlib     # 导入dlib库# get frontal face_detector()生成人脸检测器
    # 使用HOG算法、线性分类器、金字塔图像结构和滑动窗口检测等技术。
    # 比opencv提供的harr级联分类器效果更好detector = dlib.get_frontal_face_detector()  # 构造脸部位置检测器H0G
    image = cv2.imread('face.png')      # 读取图片# faces = detector(image,n)使用人脸检测器返回检测到的人脸框
    # 参数:
    #   image:待检测的可能含有人脸的图像。
    #   n:表示采用上采样的次数。上采样会让图像变大,能够检测到更多人脸对象,提高小人脸的检测效果
    #       通常建议将此参数设置为 0 或1。较大的值会增加检测的准确性,但会降低处理速度。
    # 返回值:
    #       faces:返回检测图像中的所有人脸框。faces = detector(image, 1)    
    for face in faces:  # 对每个人脸框进行逐个处理(提取坐标)# 获取人脸框的坐标x1 = face.left()    # (x1,y1)人脸框的左上角坐标y1 = face.top()x2 = face.right()   # (x2,y2)人脸框的右下角坐标y2 = face.bottom()# 绘制人脸框cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)# 显示捕获到的各个人脸框
    cv2.imshow('result', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 结果如下:
      在这里插入图片描述
  • 可以将自己含有人脸的图片传入代码中,进行人脸检测,这种基于dlib库的人脸检测方法简单有效,可以准确的将人脸检测出来

2.打开电脑摄像头,检测人脸

  • 下面是通过打开电脑的摄像头,进行检测是否有人脸,有人脸则用矩形框框出

  • 完整代码:

    import cv2
    import dlibdetector = dlib.get_frontal_face_detector()  # 构造脸部位置检测器H0Gcap = cv2.VideoCapture(0)   # 0-->打开电脑摄像头, 1-->打开电脑外接的摄像头if not cap.isOpened():      # 判断摄像头是否正常打开print("Cannot open camera")exit()while True:     # 若正常打开摄像头则对摄像头拍摄的每一帧画面进行循环处理ret, image = cap.read()  # 如果正确读取一帧图像,ret为True, image-->读取的画面image = cv2.flip(image, 1)      # 图片翻转,水平翻转(镜像)# 如果没有正确读取到图像,则退出循环if not ret:print("不能读取摄像头")break# 人脸检测faces = detector(image, 0)for face in faces:  # 对每个人脸框进行逐个处理(提取坐标)# 获取人脸框的坐标x1 = face.left()y1 = face.top()x2 = face.right()y2 = face.bottom()# 绘制人脸框cv2.rectangle(image, (x1, y1), (x2, y2), (0., 255, 0), 2)# 显示捕获到的各个人脸框cv2.imshow('result', image)# 检查是否按下ESC键(ASCII码27),如果按下则退出循环if cv2.waitKey(10) == 27:break
    # 释放摄像头资源
    cap.release()
    # 关闭所有OpenCV创建的窗口
    cv2.destroyAllWindows()
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55842.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vulnhub:Me-and-My-Girlfriend-1

一.环境启动/信息收集 (1)根据物理地址用nmap的主机发现功能得出IP地址 nmap -P 192.168.138.0/24 //同网段下主机发现得到IP为192.168.138.180(2)做nmap的目录扫描和端口扫描来发现其他站带以及信息 nmap -p- 192.168.138.180 …

使用CSS Flexbox创建简洁时间轴

使用CSS Flexbox创建简洁时间轴 在网页设计中,时间轴是一种常见且有效的方式来展示事件的顺序和进程。本文将介绍如何使用CSS Flexbox创建一个简洁优雅的时间轴,无需复杂的JavaScript代码。 基本HTML结构 首先,我们需要创建基本的HTML结构: html复制<div class"ti…

Ansible自动化工具

一、Ansible概述 1.1 什么是Ansible Ansible 是一个开源的自动化工具&#xff0c;用于配置管理、应用程序部署和任务自动化。它让你可以通过编写简单的 YAML 文件&#xff08;剧本&#xff0c;Playbooks&#xff09;&#xff0c;轻松管理和配置多个服务器。Ansible 的特点是无…

第十七周:机器学习笔记

第十七周周报 摘要Abstratc一、机器学习——生成式对抗网络&#xff08;Generative Adversarial Networks | GAN&#xff09;——&#xff08;中&#xff09;1. GAN 的理论介绍2. 用JS散度训练存在的问题3. WGAN 算法4. 拓展——流体 总结 摘要 本周周报主要对GAN进行了详细的…

学习笔记——交换——STP(生成树)工作原理

三、工作原理 STP的基本原理是在一个有二层环路的网络中&#xff0c;交换机通过运行STP&#xff0c;自动生成一个没有环路的网络拓扑。这个无环网络拓扑也叫做STP树(STP Tree)&#xff0c;树节点为某些交换机&#xff0c;树枝为某些链路。当网络拓扑发生变化时&#xff0c;STP…

js简单基础笔记

一 . js特点 1. Js是一门解释型语言&#xff0c;不用编译&#xff0c;而是直接执行 2. js是一门动态语言&#xff0c;其中的任何内容都是不确定的 3. 语法结构和Java&#xff0c;c都很像 4. ​ js是一门面向对象的语言 5.js严格区分大小写 二 . js使用 1…

TiDB 新版本:更稳、更快、更好的数据库体验

作者&#xff1a; TiDB社区小助手 原文来源&#xff1a; https://tidb.net/blog/2d33d7db 本文内容出自&#xff1a;PingCAP 高级顾问 蓝功儒老师 在 9 月 21 日 TiDB 新版本 Meetup 中&#xff0c;PingCAP 高级顾问蓝功儒老师为我们带来了关于 TiDB 新版本的深入分享。TiD…

基于LORA的一主多从监测系统_数据发送

数据上传我这里使用了问询的方式&#xff0c;这样的好处一是可以用来统计节点的存活状态&#xff0c;二是可以避免冲突&#xff0c;主节点通过向从节点发送问询帧&#xff0c;从节点收到问询帧后开始向主节点发送数据&#xff0c;同时我们也可以加入不同的帧类型&#xff0c;比…

4.three.js网格模型介绍和绘制基础点、线、面

4.three.js网格模型介绍和绘制基础点、线、面 1、计算机中3D世界的组成 在计算机世界里&#xff0c;3D世界是由点组成&#xff0c;两个点能够组成一条直线&#xff0c;三个不在一条直线上的点就能够组成一个三角形面&#xff0c;无数三角形面就能够组成各种形状的物体&#x…

Linux基础项目开发day05:量产工具——页面系统

文章目录 一、数据结构抽象page_manager.h 二、页面管理器page_manager.c 三、单元测试1、main.page.c2、page_test.c3、Makefile修改3.1、unittest中的Makefile3.2、page中的Makefile 四、上机实验 前言 前面实现了显示、输入、文字、UI系统&#xff0c;现在我们就来实现页面的…

Axure树形菜单展开与折叠

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;Axure树形菜单展开与折叠 主要内容&#xff1a;树形菜单制作——层级关系——隐藏与显示——值的变化——多层交互 应用场景&#xff1a;关系树、菜…

Python学习的自我理解和想法(15)

学的是b站的课程&#xff08;千锋教育&#xff09;&#xff0c;跟老师写程序&#xff0c;不是自创的代码&#xff01; 今天是学Python的第15天&#xff0c;从今天开始&#xff0c;每天一到两个常用模块&#xff0c;更完恢复到原来的&#xff0c;开学了&#xff0c;时间不多&am…

Java 直接获取 pom.xml 配置的属性值

Java 直接获取 pom.xml 配置的属性值 1.需求描述2.代码示例3.结果演示 系统&#xff1a;Win10 JDK&#xff1a;1.8.0_351 IDEA&#xff1a;2022.3.3 1.需求描述 在开发一个 SpringBoot 项目的时候&#xff0c;需要从 pom.xml 中获取配置的 artifactId&#xff0c;name&#xf…

vscode配置ssh远程连接服务器

注意&#xff1a;重启软件或重启电脑&#xff0c;解决很多问题 一. vscode配置ssh vscode通过ssh连接服务器&#xff08;吐血总结&#xff09;_vscode ssh-CSDN博客 二. VScode无法远程连接主机问题 VSCode远程连接服务器报错&#xff1a;Could not establish connection to…

HCIP-HarmonyOS Application Developer 习题(十六)

&#xff08;判断&#xff09;1、HiLink通过分布式软总线的方式连接所有设备&#xff0c;强能力设备可对弱能力设备进行设备虚拟化&#xff0c;将弱设备当做本机设备直接调用。 答案&#xff1a;错误 分析&#xff1a;HiLink 主要针对的是应用开发者与第三方设备开发者&#xf…

力扣 中等 143.重排链表

文章目录 题目介绍题解 题目介绍 题解 class Solution {public void reorderList(ListNode head) {ListNode mid middleNode(head);ListNode head2 reverseList(mid);while (head2.next ! null) {ListNode nxt head.next;ListNode nxt2 head2.next;head.next head2;head2.…

Linux-正则表达式

正则表达式 定义DRE模式-纯文本/特殊字符 定义DRE模式-锚字符/点号字符 定义DRE模式-字符组/排除型字符组 定义DRE模式-区间 定义DRE模式-特殊字符组 定义DRE模式-星号 扩展正则表达式-问号 扩展正则表达式-加号 扩展正则表达式-使用花括号 扩展正则表达式-管道符号/表达式分组…

如何通过CDN优化网站服务器访问速度?

CDN&#xff0c;即内容分发网络&#xff08;Content Delivery Network&#xff09;&#xff0c;在现代互联网中起着重要作用。它可以显著提升网站服务器的访问速度。以下是CDN在加速网站访问方面的主要优势及其工作原理。 1. 全球分布的服务器节点 CDN通过在全球范围内布设多个…

【Router】路由器中NAT、NAPT、NPT是什么?

参考链接 NAT vs. NAPT: What’s the Difference? IPv6 Network Prefix Translation (NPt) | pfSense Documentation (netgate.com) 趣谈NAT/NAPT的原理&#xff0c;这篇不可不读&#xff01; - 知乎 (zhihu.com) NAT (Network Address Translation) NAT说明 NAT&#x…

成都睿明智科技有限公司电商服务可靠不?

在这个短视频风起云涌的时代&#xff0c;抖音不仅成为了人们娱乐消遣的首选平台&#xff0c;更是众多商家竞相追逐的电商新蓝海。成都睿明智科技有限公司&#xff0c;作为抖音电商服务领域的佼佼者&#xff0c;正以其独到的洞察力和专业的服务&#xff0c;助力无数品牌在这片沃…