当前位置: 首页 > news >正文

《计算机视觉》—— 基于PyCharm中的dlib库实现人脸关键点定位

文章目录

  • 1. 安装必要的库
  • 2. 下载dlib的人脸检测器和关键点预测器模型
  • 3. 编写代码

人脸关键点定位是指通过计算机视觉技术,识别和定位人脸图像中的关键点,如眼睛、鼻子、嘴巴等特定位置。这些关键点的准确定位对于人脸识别、表情分析、姿态估计等应用具有重要意义。

1. 安装必要的库

  • 首先,你需要确保你的PyCharm环境中安装了dlib、opencv-python(或cv2)和numpy等库。你可以通过PyCharm的Settings -> Project: [Your Project Name] -> Python Interpreter来添加这些库,或者使用pip命令在终端中安装它们:

    pip install dlib opencv-python numpy
    
  • 在终端里直接安装 dlib 库可能会出现问题,可以参照以下来链接中的内容进行安装

    • https://blog.csdn.net/weixin_73504499/article/details/142977202?spm=1001.2014.3001.5501

2. 下载dlib的人脸检测器和关键点预测器模型

dlib提供了预训练的人脸检测器和关键点预测器模型。你需要从dlib的官方资源中下载这些模型,并将它们保存到你的项目中。

  • 人脸检测器模型(例如:shape_predictor_68_face_landmarks.dat
  • 人脸识别模型(可选,如果你还需要进行人脸识别)

你可以从dlib的模型下载页面获取这些模型。

3. 编写代码

  • 以下是一个简单的Python脚本,它使用dlib库来加载模型,检测图像中的人脸,并定位关键点:

    import numpy as np
    import cv2
    import dlib# 读取图片
    image = cv2.imread('kobe_2.jpg')    # 构造人脸检测器
    detector = dlib.get_frontal_face_detector()  # 检测人脸
    faces = detector(image, 0) # dlib.shape_predictor 载入模型(加载预测器)
    # 可以从 https://github.com/davisking/dlib-models 下载 xmlopencv 自己训练好的特征,dlib人脸关键点的检测模型
    predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
    # 获取每一张脸的关键点(实现检测)
    for face in faces:  shape = predictor(image, face)  # 获取关键点# 将关键点转换为坐标(x,y)的形式landmarks = np.array([[p.x, p.y] for p in shape.parts()])# 绘制每一张脸的关键点(绘制shape中的每个点)for idx, point in enumerate(landmarks):pos = [point[0], point[1]]  # 当前关键点的坐标# 针对当前关键点,绘制一个实心圆cv2.circle(image, pos, 3, color=(0, 255, 0), thickness=-1)# 将每个关键点的索引号写在旁边,             普通大小的等宽字体                                                  线条类型:抗锯齿线条。cv2.putText(image, str(idx), pos, cv2.FONT_HERSHEY_SIMPLEX, 0.4, (255, 255, 255), 1, cv2.LINE_AA)# 显示结果
    cv2.imshow("result", image)
    cv2.waitKey(0)
    # 关闭所有OpenCV创建的窗口
    cv2.destroyAllWindows()
    
  • 结果如下:
    在这里插入图片描述

相关文章:

《计算机视觉》—— 基于PyCharm中的dlib库实现人脸关键点定位

文章目录 1. 安装必要的库2. 下载dlib的人脸检测器和关键点预测器模型3. 编写代码 人脸关键点定位是指通过计算机视觉技术,识别和定位人脸图像中的关键点,如眼睛、鼻子、嘴巴等特定位置。这些关键点的准确定位对于人脸识别、表情分析、姿态估计等应用具有…...

c++习题34-说谎

目录 一,题目 二,思路 三,代码 一,题目 描述 ljc以自己的人格担保他最后一个回答一定是正确的,但并不保证其它的回答是对的。 每个数为ljc对上一个的回答,若为0表示说上句话是错的,若为…...

如何使用Android Profiler进行性能分析?

Android Profiler是Android Studio中一个功能强大的性能分析工具,它可以帮助开发者实时监控应用的CPU、内存、网络、电量和图形渲染等性能指标,从而发现并解决性能瓶颈。以下是如何使用Android Profiler进行性能分析的详细步骤和技巧。 一、准备工作 安…...

整理—MySQL

目录 NOSQL和SQL的区别 数据库三大范式 MySQL 怎么连表查询 MySQL如何避免重复插入数据? CHAR 和 VARCHAR有什么区别? Text数据类型可以无限大吗? 说一下外键约束 MySQL的关键字in和exist mysql中的一些基本函数 SQL查询语句的执行顺…...

临时配置linux Bridge网桥

Linux Bridge(网桥)是用纯软件实现的虚拟交换机,有着和物理交换机相同的功能,例如二层交换,MAC地址学习等。因此我们可以把tun/tap,veth pair等设备绑定到网桥上,就像是把设备连接到物理交换机上…...

【Canvas与化学】铁元素图标

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>铁元素图标Draft1</title><style type"text/css"…...

list转map常用方法

利用Collectors.toMap收集指定属性 public Map<Long, String> getIdNameMap(List<Account> accounts) {return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername)); } 收集对象实体本身 - 在开发过程中我们也需要有时候对自己…...

C++容器适配器的模拟实现-stack、queue、priority_queue

### 容器适配器是将容器转换到其他容器自身不方便使用的地方&#xff0c;但是就容器适配器其本身还是包装的容器&#xff0c;所以这个类模板中各个接口的实现都是调用的容器的接口&#xff0c;因为容器适配器可能适配多个容器&#xff0c;所以这个类模板的模板参数中有一个参数…...

fastapi的docs页面是空白解决

环境&#xff1a;openEuler、python 3.11.6、fastapi 0.115.2 背景&#xff1a;居家办公&#xff0c;默认搭建的fastapi的docs接口为空白 时间&#xff1a;20241016 说明&#xff1a;网上很多教程的缺点是复杂&#xff08;但是能够了解的更清楚&#xff09;&#xff0c;使用…...

浙大数据结构:11-散列4 Hashing - Hard Version

这道题主要在于思路&#xff0c;感觉像个模拟题&#xff0c;用到了线性探测的算法 机翻 1、条件准备 visit数组看这个位置有没有放进来数&#xff0c;num存非负整数&#xff0c;s存未到放入时机的数。 answer存答案。n为总共数量。 #include <iostream> #include<…...

pm2 守护http-server

PM2&#xff08;Process Manager 2&#xff09;是一个用于Node.js应用程序的进程管理器。以下是使用PM2守护HTTP服务器的步骤&#xff1a; 1. 安装PM2 如果你还没有安装PM2&#xff0c;可以使用以下命令安装&#xff1a; npm install pm2 -g 2. 启动HTTP服务器 你需要一个HTT…...

国外电商系统开发-运维系统应用管理

还记得您常用的 service httpd start 、service sshd stop这样的命令吗&#xff1f;这些都是在停止启动服务&#xff0c;为了让研发人员&#xff0c;或者是快速操作服务&#xff0c;这里给大家制定了简单的应用管理。在这里&#xff0c;您可以把上面的命令加入进来&#xff0c;…...

剖析线程池实现原理

前置推荐阅读&#xff1a;java并发之线程池使用-CSDN博客 自定义实现一个带监控的线程池 首先我们继承ThreadPoolExecutor&#xff0c;实现构造函数以及重写beforeExecute和afterExecute两个函数&#xff0c;具体调用我们会在代码实现层面进行详细的分析。 import java.util.…...

【中危】Oracle TNS Listener SID 可以被猜测

一、漏洞详情 Oracle 打补丁后&#xff0c;复测出一处中危漏洞&#xff1a;Oracle TNS Listener SID 可以被猜测。 可以通过暴力猜测的方法探测出Oracle TNS Listener SID&#xff0c;探测出的SID可以用于进一步探测Oracle 数据库的口令。 建议解决办法&#xff1a; 1. 不应该使…...

三维测量与建模笔记 - 简介

计算机视觉相关主题 主要有两个最主要的层面&#xff0c;几何和语义。几何层面描述了客观事实&#xff0c;比如物体的距离、大小、形状、位置等。语义层面则是从人类抽象出的概念出发&#xff0c;描述了物体是什么、行为是什么、为什么&#xff0c;比如自动驾驶场景中识别出信号…...

Glide 简易教程

文章目录 1 引入依赖2 图片形状2.1 圆形 CircleCrop2.2 旋转 Rotate2.3 圆角 RoundedCorners2.4 自定义圆角 GranularRoundedCorners 1 引入依赖 implementation("com.github.bumptech.glide:glide:4.16.0")2 图片形状 2.1 圆形 CircleCrop Glide.with(this).load…...

flutter 使用三方/自家字体

将字体放入assets/fonts下 在pubspec.yaml文件中flutter下添加如下代码&#xff1a; flutter:fonts:- family: MyCustomFontfonts:- asset: assets/fonts/MyCustomFont.ttf 在flutter Text widget中使用字体 import package:flutter/material.dart;void main() > runApp(…...

2024台州赛CTFwp

备注&#xff1a; 解题过程中&#xff0c;关键步骤不可省略&#xff0c;不可含糊其辞、一笔带过。解题过程中如是自己编写的脚本&#xff0c;不可省略&#xff0c;不可截图&#xff08;代码字体可以调小&#xff1b;而如果代码太长&#xff0c;则贴关键代码函数&#xff09;。…...

词根plac-和place、please

英文有一个词根和单词place(v.放&#xff0c;放置 n.位置&#xff0c;地方&#xff1b;位&#xff0c;职位)长得很像&#xff0c;这个词根就是plac-&#xff0c;它有两个语义&#xff1a;高兴&#xff0c;愉悦&#xff1b;平静&#xff0c;抚平。 其实&#xff0c;place这个单…...

ubuntu下route命令详解

buntu下route命令详解 1、显示路由表 route -n2、临时路由设置&#xff0c;重启网卡失效#添加一条路由(发往192.168.62这个网段的全部要经过网关192.168.1.1)route add -net 192.168.62.0 netmask 255.255.255.0 gw 192.168.1.1#删除一条路由 删除的时候不用写网关route del …...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...