《计算机视觉》—— 基于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 dlib
    
    detector = dlib.get_frontal_face_detector()  # 构造脸部位置检测器H0G
    
    cap = 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()
    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

域渗透AD渗透攻击利用 MS14-068漏洞利用过程 以及域渗透中票据是什么 如何利用

目录 wmi协议远程执行 ptt票据传递使用 命令传递方式 明文口令传递 hash口令传递 票据分类 kerberos认证的简述流程 PTT攻击的过程 MS14-068 漏洞 执行过程 wmi协议远程执行 wmi服务是比smb服务高级一些的,在日志中是找不到痕迹的,但是这个主…

mongodb在linux下的部署

目录 版本部署上传到服务器中创建目录,解压创建mongodb.conf添加环境变量添加到系统服务中centos6 中添加到服务中 重新加载服务并启动卸载,mongodb.conf配置项等 创建用户,设置用户名密码角色启动验证验证 常见知识mongodb角色mongodb.conf配…

如何禁止上班期间浏览无关网站?

禁止员工在上班期间浏览无关网页主要是为了提升工作效率和生产力,确保员工能够专注于工作任务。同时,这种做法有助于降低网络安全风险,防止恶意软件和钓鱼攻击,减少数据泄露和法律风险,维护公司的专业形象,…

数据结构深度优先搜索遍历连通图+非连通图(C语言代码+遍历+终端输入内容)

首先数据结构(C语言版第二版)的关于深度优先搜索遍历连通图的图G4如下: 使用邻接表去创建上面这个无向图&#xff0c;然后再使用书本DFS函数以及DFSTraverse函数实现深度优先搜索遍历 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #…

微调大模型-2-Qwen基座模型使用

下载Qwen源码 Qwen作为中文支持非常nice的模型&#xff0c;很适合用于LLM学习。在云服务器里clone Qwen工程。 git clone https://github.com/QwenLM/Qwen2.5.git原始模型使用主要基于cli_demo.py-命令行调用&#xff0c;web_demo.py-网页调用。 预览这两个文件时&#xff0c…

Python | Leetcode Python题解之第497题非重叠矩形中的随机点

题目&#xff1a; 题解&#xff1a; class Solution:def __init__(self, rects: List[List[int]]):self.rects rectsself.sum [0]for a, b, x, y in rects:self.sum.append(self.sum[-1] (x - a 1) * (y - b 1))def pick(self) -> List[int]:k randrange(self.sum[-1…

vue3移动端可同时上传照片和视频的组件

uni-app中的uni-file-picker可单独上传照片或视频&#xff0c;但不支持同时上传照片和视频。本篇博客使用image标签和video标签实现移动端&#xff08;H5app小程序&#xff09;中照片和视频的同时上传。 本篇博客采用的是照片和视频的单独上传&#xff0c;但可同时展示&#xf…

Qt(简介)

1. Qt简介 Qt是一个基于C的图形用户界面&#xff08;GUI&#xff09;框架&#xff0c;可以开发可视化人机交互程序&#xff0c;但是这并不是Qt的全部。Qt除了可以绘制漂亮的界面外&#xff0c;还包含很多其他的功能&#xff1a;多线程、数据库、图像处理、音视频处理、网络通信…

后台管理员登录实现--系统篇

我的小系统后台原来就有一个上传图片的功能还夹带个删除图片的功能&#xff0c;还嵌到了一个菜单里面。之前效果如下 那么现在为了加大安全力度&#xff0c;想增加一个登录页面。通过登录再到这个页面。看着貌似很简单&#xff0c;但是听我细细说来&#xff0c;要新增些什么东西…

MySQL-视图 (ಥ_ಥ)

文本目录&#xff1a; ❄️一、什么是视图&#xff1a; ❄️二、创建视图&#xff1a; ❄️三、使用视图&#xff1a; ❄️四、修改数据&#xff1a; 1、注意事项&#xff1a; ❄️五、删除视图&#xff1a; ❄️六、视图的优点&#xff1a; ❄️总结&#xff1a; 对于这…

HT7179 26.8V,15A高效升压转换器

1、特征 输入电压范围:2.7V-25V 输出电压范围:最高26.8V 固定开关频率:350kHz 可编程峰值电流:最高15A 高转换效率1 95% (PVIN 12V, VOUT25V, IOUT 2A) 94%(PVIN 12V, VOUT25V, IOUT 4.5A) 93%(PVIN 7.2V, VOUT12V, IOUT 1.5A) 90% (PVIN 7.2V, VOUT12V, IOUT 5A) 96%(PVIN…

Perl打印9x9乘法口诀

本章教程主要介绍如何用Perl打印9x9乘法口诀。 一、程序代码 1、写法① use strict; # 启用严格模式&#xff0c;帮助捕捉变量声明等错误 use warnings; # 启用警告&#xff0c;帮助发现潜在问题# 遍历 1 到 9 的数字 for my $i (1..9) {# 对于每个 $i&#xff0c;遍历 1…

MoCoOp: Mixture of Prompt Learning for Vision Language Models

文章汇总 当前的问题 1)数据集风格变化。 如图1所示&#xff0c;对于一个数据集&#xff0c;单个软提示可能不足以捕获数据中呈现的各种样式。同一数据集中的不同实例可能与不同的提示符兼容。因此&#xff0c;更**自然的做法是使用多个提示来充分表示这些变化**。 2)过拟合…

V4L2驱动框架

文章目录 一、V4L2简介二、v4l2驱动关键组件&#xff08;一&#xff09;video_device结构体v4l2操作方法结构体v4l2的ioctl操作方法结构体 &#xff08;二&#xff09;v4l2_device结构体 一、V4L2简介 V4L2&#xff0c;即Video for Linux two&#xff0c;是Linux内核中用于视频…

qt项目使用其他项目的ui之单继承之成员变量

第一步添加.ui文件 第二步&#xff0c;点击编译(原理&#xff1a;qt的uic会将.ui界面编译成c文件) 第三步&#xff1a;在编译后的目录下找到#include “ui_pagewidget.h” 第四步&#xff1a; #ifndef USA_H #define USA_H#include <QWidget>#include "ui_pagew…

设计模式概览

设计模式是一种解决常见编程问题的经验总结&#xff0c;提供了代码的可重用性、可扩展性和可维护性。常见的设计模式有23个&#xff0c;主要分为三大类&#xff1a;创建型模式、结构型模式和行为型模式。下面是这三类设计模式的详细分类和讲解&#xff1a; 一、创建型模式 创建…

记一个src中危-图像大小与请求参数可修改

记一个src中危-图像大小与请求参数可修改 漏洞描述 服务器生成了一个具有客户端指定尺寸的图像&#xff0c;如果未实施任何限制&#xff0c;则可能导致拒绝服务攻击。 漏洞危害 攻击者不需要在此类攻击中投入资源&#xff0c;但服务器可能会分配所需的像素缓冲区&#xff0…

rk3588_DRM_显示

DRM简介&#xff08;Direct Rendering Manager&#xff09; hdmi 查看hdmir接口状态 cat /sys/class/drm/card0-HDMI-A-2/statusconnected 参考文章 rk3588_dp调试_rk3588 dp接口适配-CSDN博客

十六、【智能体】如何高效利用智能体知识库:打造智能助理的核心支撑

“知识库” 节点可以理解为一个集中存储和管理知识的地方。 就像一个装满各种工具和资源的工具箱&#xff0c;它包含了大量的信息、数据、文档、经验总结等各种知识内容。 为我们提供了一个便捷的途径来获取所需的知识&#xff0c;以解决问题、做出决策或者进行学习和研究。 …

Windows无法打开组策略 | Windows家庭版如何添加和打开组策略

什么是组策略&#xff08;Group Policy&#xff09;&#xff1f; 组策略 是微软Windows操作系统中的一个重要功能&#xff0c;它允许系统管理员通过统一的界面集中配置计算机和用户设置。 组策略设置是通过编辑“组策略对象”&#xff08;GPOs&#xff09;来实现的&#xff0c;…