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

news2024/10/17 10:16:53

文章目录

  • 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()
    
  • 结果如下:
    在这里插入图片描述

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

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

相关文章

天地伟业NVR管理工具EasyNVR平台多个NVR同时管理运行后日志一直在打印error

视频安防监控平台天地伟业NVR管理工具EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTMP、RTSP、WS-FLV、HTTP-FLV、WebRTC、HLS等多种视频流格式。平台可提供视频实时监控直播、云端录像、录像检索、云存储与回看…

基于SSM的药品商城系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

沉浸式娱乐新纪元,什么是5G+实时云渲染VR大空间?

近年来,虚拟现实(VR)技术在娱乐、教育、医疗等多个领域展现出巨大的潜力,尤其是VR大空间体验,更是以其沉浸式和互动性的特点,迅速成为市场的新宠。据Statista数据显示,2023年,全球虚…

Lumerical学习——资源管理和运行模拟

一、资源管理(Resource Manager) 在模拟计算前必须对计算资源进行配置。采用资源管理器可以完成这项任务。单击主工具条的“资源(Resources)”按钮(见上图)就可以打开资源管理器。通常每个计算机只需设置一…

【含文档】基于Springboot+Vue的仓库管理系统设计与实现(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

JAVA基础【第二篇】

文章目录 类变量介绍语法代码示例 类方法介绍注意事项代码示例 代码块介绍基本语法注意事项 设计模式单例设计模式介绍饿汉式懒汉式两者区别 模板设计模式介绍代码示例 final关键字介绍代码示例注意事项 抽象类介绍注意事项 接口介绍基本语法注意细节接口特性 内部类介绍分类局…

深入理解 KMP 算法

《深入理解 KMP 算法》 在计算机科学中,字符串匹配是一个常见且重要的问题,而 KMP(Knuth - Morris - Pratt)算法则是一种高效的字符串匹配算法。 一、KMP 算法的背景 在传统的字符串匹配算法中,当遇到不匹配的字符时…

基于AES的遥感图像加密算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 AES 加密算法概述 4.2 基于 AES 的遥感图像加密算法原理 5.完整程序 1.程序功能描述 通过AES算法对遥感图像进行加密和解密,分析加解密处理后图像的直方图,相关…

React之组件渲染性能优化

关键词: shouldComponentUpdate、PureComnent、React.memo、useMemo、useCallback shouldComponentUpdate 与 PureComnent shouldComponentUpdate 与 PureComnent 用于类组件。虽然官方推荐使用函数组件,但我们依然需要对类组件的渲染优化策略有所了解…

jar 导入本地和远程私服 maven 仓库

jar 导入本地和远程私服 maven 仓库artemis-http-client 认证库 maven 坐标为: 执行 mvn 命令: mvn install:install-file -DfileD:\download\lib\artemis-http-client-1.1.12.RELEASE.jar -DgroupIdcom.hikvision.ga -DartifactIdartemis-http-clien…

图像中的融合

图像显示函数 def img_show(name, img):"""显示图片:param name: 窗口名字:param img: 图片对象:return: None"""cv2.imshow(name, img)cv2.waitKey(0)cv2.destroyAllWindows()图像读取与处理 读取图片 cloud cv2.imread(bg.jpg) fish cv2.…

C++ | Leetcode C++题解之第485题最大连续1的个数

题目&#xff1a; 题解&#xff1a; class Solution { public:int findMaxConsecutiveOnes(vector<int>& nums) {int maxCount 0, count 0;int n nums.size();for (int i 0; i < n; i) {if (nums[i] 1) {count;} else {maxCount max(maxCount, count);coun…

【二刷hot-100】day1

目录 1.两数之和 2.字母异位词分组 3.字母异位词分组 4.最长连续序列 5.移动零 6.盛最多水的容器 7.三数之和 8.接雨水 1.两数之和 class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> mapnew HashMap<>();for (int i0;i<…

10.16标准IO

1、完成标准IO的单字符、字符串、格式化、模块化实现两个文件的拷贝&#xff1b; 单字符实现 #include <myhead.h> int main(int argc, const char *argv[]) {//使用单字符完成两个文件拷贝FILE *fp_srcfopen(argv[1],"r");FILE *fp_destfopen(argv[2],"…

猪圈密码简单实例

猪圈密码简单实例 猪圈密码表 根据上面的密码表&#xff0c;得到每个字母所对应的符号如下 例如单词the的加密结果为&#xff1a;

IO编程--单字符、字符串、格式化、模块化实现文件拷贝以及登录注册

一、完成标准io的单字符、字符串、格式化、模块化实现两个文件的拷贝 代码如下&#xff1a; 1.单字符 #include <myhead.h> int main(int argc, const char *argv[]) {//打开文件FILE* fpfopen("test.txt","r"); FILE* fqfopen("copy_test.txt&…

leetcode:744. 寻找比目标字母大的最小字母(python3解法)

难度&#xff1a;简单 给你一个字符数组 letters&#xff0c;该数组按非递减顺序排序&#xff0c;以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这样的字符&#xff0c;则返回 letters 的第一个字符。 示例 1&a…

2024国际潜水小姐大赛中国区总决赛盛典在广州举行,吉林选手张潇文获冠军!

传承“以美之名&#xff0c;保护海洋”的精神&#xff0c;2024年10月15日晚&#xff0c;2024国际潜水小姐大赛中国区总决赛盛典在广州渔民新村隆重举行&#xff01;来自全国多个城市&#xff0c;经过层层选拔产生的20位佳丽齐聚广州&#xff0c;以独特的女性水下之美和健康美&a…

初识算法 · 二分查找(1)

目录 前言&#xff1a; 二分查找 题目解析 算法原理 算法编写 搜索插入位置 题目解析 算法原理 算法编写 前言&#xff1a; 本文呢&#xff0c;我们从滑动窗口窗口算法移步到了二分查找算法&#xff0c;我们简单了解一下二分查找算法&#xff0c;二分查找算法是一个十…

安科瑞末端组合式智慧用电装置在高校宿舍中的应用

1相关背景 学校宿舍用电隐患 安全用电历来都是学校安全工作的一个重点&#xff0c;然而每年因此发生的人身伤害以及火灾事故却在继续&#xff0c;究其原因&#xff0c;主观上是我们的防患意识淡薄&#xff0c;客观上则是由于学生在宿舍使用违规电器、乱拉电线造成的。 现代的…