【代码】读取图像,计算面宽比,并保存至表格

简介: 【代码】读取图像,计算面宽比,并保存至表格

计算面宽比

此处计算(第一个点和第17个点之间的距离)/(第28个点和第52个点之间的距离)


import cv2
import dlib
import math
import numpy as np  # 导入numpy库



#读取图片
img = cv2.imread("C:/Users/Lenovo/Desktop/c.jpg")
print(img.shape)

#图像转化为灰度图

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#获得脸部位置检测器(加载人脸检测模块)
detector = dlib.get_frontal_face_detector()

#使用detector进行人脸检测 dets为返回的结果
faces = detector(gray_img, 1)

#用dlib库加载预测模型
predictor=dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")

for k, d in enumerate(faces):
    shape = predictor(gray_img, d)

    # 计算第一个点和第17个点之间的距离
    point_1 = shape.part(0)   # 第一个特征点
    point_17 = shape.part(16) # 第17个特征点
    distance_1 = math.sqrt((point_1.x - point_17.x)**2 + (point_1.y - point_17.y)**2)

    # 计算第28个点和第52个点之间的距离
    point_28 = shape.part(27) # 第28个特征点
    point_52 = shape.part(51) # 第52个特征点
    distance_2 = math.sqrt((point_28.x - point_52.x)**2 + (point_28.y - point_52.y)**2)

    # 计算面部比例
    facial_ratio = distance_1 / distance_2

    print("面部比例是:", facial_ratio)

读取某一文件夹下的图片并计算面宽比,并保存至表格

将代码放到图片同级路径,注意更改图片路径和表格存放路径

imimport cv2
import dlib
import math
import numpy as np  # 导入numpy库

import os
from PIL import Image
import pandas as pd

folder_path = r"F:\face_code\pics"
filename_list = []
for filename in os.listdir(folder_path):
    filepath = os.path.join(folder_path, filename)

    # 检查文件类型是不是图片
    if os.path.isfile(filepath) and filepath.endswith(('.bmp','.jpg')):
        # 打开图片并处理
        with Image.open(filepath) as img:
            # TODO: 在这里进行你的图片处理操作
            # 示例代码:输出图片信息
            print(filename, "- Size:", img.size, "- Format:", img.format)
            filename_list.append(filename)
facial_ratio_list = []
for filename in filename_list:
    #读取图片
    print(filename)
    img = cv2.imread(filename)
    print(img.shape)

    #图像转化为灰度图

    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    #获得脸部位置检测器(加载人脸检测模块)
    detector = dlib.get_frontal_face_detector()

    #使用detector进行人脸检测 dets为返回的结果
    faces = detector(gray_img, 1)

    #用dlib库加载预测模型
    predictor=dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")

    for k, d in enumerate(faces):
        shape = predictor(gray_img, d)

        # 计算第一个点和第17个点之间的距离
        point_1 = shape.part(0)   # 第一个特征点
        point_17 = shape.part(16) # 第17个特征点
        distance_1 = math.sqrt((point_1.x - point_17.x)**2 + (point_1.y - point_17.y)**2)

        # 计算第28个点和第52个点之间的距离
        point_28 = shape.part(27) # 第28个特征点
        point_52 = shape.part(51) # 第52个特征点
        distance_2 = math.sqrt((point_28.x - point_52.x)**2 + (point_28.y - point_52.y)**2)

        # 计算面部比例
        facial_ratio = distance_1 / distance_2

        print("面部比例是:", facial_ratio)
        facial_ratio_list.append(facial_ratio)
print(filename_list)
print(facial_ratio_list)

# 创建数据
data = {
    '图片': filename_list,
    '面宽比': facial_ratio_list
}

# 将数据转换为DataFrame
df = pd.DataFrame(data)

# 将数据输出到Excel文件
filepath = 'F:/face_code/excel.xlsx'
df.to_excel(filepath, index=False)

安装dlib报错怎么办

pip install dlib==19.6.1
相关文章
|
索引 容器
UE5 学习笔记-01
UE5 学习笔记
|
5月前
|
监控 前端开发 安全
如何集成第三方支付API到电商网站
在电商网站中,集成第三方支付API是确保交易安全、提升用户体验的关键步骤。本文详细介绍了从选择支付提供商到上线监控的全流程,涵盖代码示例与实用建议,助您高效实现支付功能。
345 0
|
3月前
|
存储 JavaScript 前端开发
JavaScript 语法全面解析
JavaScript 语法体系丰富且不断更新,从基础的变量声明、数据类型,到复杂的函数、对象、异步语法,每个知识点都需要开发者深入理解并灵活运用。本文梳理的 JS 语法核心内容,可为开发者提供系统的学习框架,后续还需通过大量实践(如编写交互组件、实现业务逻辑)巩固知识,逐步提升 JS 编程能力,应对前端开发中的各类挑战。
|
SQL Java 关系型数据库
理解 Java 持久化 API(JPA)
【8月更文挑战第21天】
423 1
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习实践篇 第五章:模型保存与加载
简要介绍pytorch中模型的保存与加载。
601 0
|
SQL 存储 数据库
使用explain优化慢查询的业务场景分析
`EXPLAIN` SQL 命令用于分析查询执行计划,揭示数据库如何处理查询,包括索引使用、扫描方式等。通过分析 `EXPLAIN` 输出,可优化查询性能,例如检查全表扫描、索引利用等。案例展示了如何通过 `EXPLAIN` 优化订单和学生课程查询,通过添加索引、子查询过滤等方式减少处理行数,提高效率。
461 3
使用explain优化慢查询的业务场景分析
|
Oracle 关系型数据库 数据库
PostgreSQL和Oracle两种数据库有啥区别?如何选择?
PostgreSQL和Oracle两种数据库有啥区别?如何选择?
867 0
|
监控 前端开发 JavaScript
构建高效实时应用:Python WebSocket在前后端分离架构中的实践
【7月更文挑战第18天】WebSocket助力实时Web应用,通过一次握手建立持久连接,解决HTTP实时性问题。Python中可用Flask-SocketIO创建WebSocket服务器,前端JavaScript使用Socket.IO库连接。确保安全可采用HTTPS、认证及跨域限制。示例代码展示如何实现双向实时通信。
415 4
|
人工智能 Oracle 关系型数据库
一篇文章弄懂Oracle和PostgreSQL的Database Link
一篇文章弄懂Oracle和PostgreSQL的Database Link
|
弹性计算 关系型数据库 数据库
在阿里云上搭建高效Web服务的完整指南
构建高效、稳定的Web服务是每个开发者的必修课。本文将详细介绍如何基于阿里云的相关产品,搭建一个具有高可用性和强大性能的Web服务。我们将使用Elastic Compute Service(ECS)、Server Load Balancer(SLB)、Relational Database Service(RDS)、域名服务等阿里云产品,通过图文并茂的方式为你展示整个流程。
517 0

热门文章

最新文章