首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【代码】读取图像,计算面宽比,并保存至表格

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

作者头像
未名编程
发布于 2024-10-12 12:57:53
发布于 2024-10-12 12:57:53
20100
代码可运行
举报
文章被收录于专栏:PythonPython
运行总次数:0
代码可运行
计算面宽比

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)
读取某一文件夹下的图片并计算面宽比,并保存至表格

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 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报错怎么办
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install dlib==19.6.1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
手动实现函数节流(throttle)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> /* * 函数节流 * 简单地讲,就是让一个函数无法在很短的时间间隔内连续调用,只有当上一次函数执行后过了你规定的时间间隔,、 * */ <body> <script> function throttle(fn,incomingTime){ let time='' return function()
我乃小神神
2020/05/18
3380
函数节流详解
个人理解 函数节流就是fps(射击)游戏的射速,就算一直按着鼠标射击,也只会在规定射速内射出子弹。
江一铭
2022/06/16
3080
函数节流详解
JavaScript网页性能优化(函数防抖与函数节流)
b.输入框事件:验证手机号或者邮箱,用户输入时不断触发键盘事件,应该等用户结束输入之后,以最后一次输入为准
帅的一麻皮
2020/05/16
1.5K0
函数防抖与函数节流
有一些浏览器事件我们不希望它很频繁的触发,如调整窗口大小(onresize)、监听滚动条滚动(onscroll),如果这些监听事件需要调用接口的话一秒内可能会调用上百次,这样坑定是有问题的。
全栈程序员站长
2022/07/21
2200
函数节流与函数防抖
函数节流与函数防抖 函数节流和函数防抖是一个老生常谈的话题了,两者都是对大量频繁重复调用代码的一种优化方案 今天在某群和大家讨论时,顺便搜了一些相关博客 发现有一篇关于两者的定义竟然写反了。。。所以
贾顺名
2018/04/12
1K0
函数节流与函数防抖
JS函数节流和函数防抖
之所以返回一个函数,因为防抖本身更像是一个函数修饰,所以就做了一次函数柯里化。里面也用到了闭包,闭包的变量是timer。
用户1437675
2019/07/19
1.2K0
javaScript 函数节流
IMWeb前端团队
2018/01/08
9910
javaScript 函数节流
函数节流与函数防抖
函数节流与函数防抖的目的都是为了减少用户对服务器不必要的请求次数,以此提高服务器性能的函数。节流是在一段时间内,只向服务器请求一次。防抖则是在频繁触发相同请求时,若任务之间间隔小于指定时间,那么只会执行最后一次请求。
_kyle
2020/08/22
5710
javaScript 函数节流
什么是javascript函数节流?从其字面意思可以大概猜到是一种为提升函数调用执行性能的一种方法。javascript函数节流就是针对调用频率高的函数,通过设置定时器,使其在执行后间隔一段时间,才进行下一次的执行,避免重复频繁的调用导致的浏览器性能以及ajax重复调用问题。 函数节流的经典应用场景:onresize,scroll,mousemove ,mousehover等事件回调函数的无间断执行。其主要实现思路就是通过setTimeout定时器,通过设置缓冲时间,在第一次调用时,创建定时器,并在定时时间
用户1097444
2022/06/29
5570
javaScript 函数节流
微信小程序 函数防抖和函数节流
函数节流是减少函数的触发频率;函数防抖是延迟函数执行,且不管触发多少次都只执行最后一次
peng_tianyu
2022/12/15
1.5K0
函数的节流与防抖
1. 概念 节流:事件触发后,规定时间内,事件处理函数不能再次被调用。也就是说在规定的时间内,函数只能被调用一次,且是最先被触发调用的那次。 防抖:多次触发事件,事件处理函数只能执行一次,并且是在触发操作结束时执行。也就是说,当一个事件被触发准备执行事件函数前,会等待一定的时间,如果没有再次触发,那么就执行,如果被触发了,那就本次作废,重新从新触发的时间开始计算,并再次等待1秒,知道能最终执行。 2. 使用场景 节流:滚动加载更多、搜索框搜索联想功能、高频点击、表单重复提交 防抖:搜索框搜索输入,并输入完成
愤怒的小鸟
2020/12/10
5820
JavaScript 高频函数优化-函数防抖&函数节流
什么是高频函数? oninput(实时获取输入的数据) onscroll(监听页面的滚动) onresize(监听浏览器可视区域的变化) onmousemove(移动端监听手指在屏幕的滑动) 什么是函
前端小tips
2021/11/24
4220
JavaScript 高频函数优化-函数防抖&函数节流
函数节流与防抖
函数防抖,就是指触发事件后在一定时间内函数只能执行一次,如果在这段时间内再次触发,则会重新计时,直到事件触发后一定时间内不再触发
小丞同学
2021/08/16
4970
js的函数节流、函数防抖及其使用场景
先说函数防抖,他的使用场景最多是在搜索时使用,比如百度的搜索,你在输入文字后的一段时间内开始自动搜索而不是每次按下键都执行一次搜索。因为如果每次按键都搜索,则会消耗大量的服务器资源。
OECOM
2020/07/02
9330
【JS】javaScript 函数节流
什么是javascript函数节流?从其字面意思可以大概猜到是一种为提升函数调用执行性能的一种方法。javascript函数节流就是针对调用频率高的函数,通过设置定时器,使其在执行后间隔一段时间,才进行下一次的执行,避免重复频繁的调用导致的浏览器性能以及ajax重复调用问题。
Ning@
2021/11/10
1.2K0
函数去抖(debounce)& 函数节流(throttle)总结
让某个函数在一定 事件间隔条件(去抖debounce) 或 时间间隔条件(节流throttle) 下才会去执行,避免快速多次执行函数(操作DOM,加载资源等等)给内存带来大量的消耗从而一定程度上降低性能问题。
全栈程序员站长
2022/09/06
4.3K0
函数去抖(debounce)& 函数节流(throttle)总结
【JS实用技巧篇】01-函数防抖|节流
本专栏主要是一些实用技巧,带大家灵活运用、并理解其思想;另外后续也会开设js核心知识方面的专栏带大家深入理解js这门语言。由于个人刚完成js阶段的学习,却没有什么项目经验,另外感觉自己基础也不是很好;所以梳理了下js学习过程中个人认为必须掌握的一些知识点、技巧等,以此为后期的学习打下坚实的基础。
好吃懒洋洋
2022/11/15
6420
【JS实用技巧篇】01-函数防抖|节流
JavaScript中的函数防抖与函数节流
函数防抖(debounce)当调用动作过n毫秒后,才会执行该动作,若在这n毫秒内又调用此动作则将重新计算执行时间。
刘亦枫
2020/03/19
6230
函数防抖和函数节流的简单实现和探讨
上面有个问题就是如果再场景2那种情况,用户提交数据请求是发不出去的。而且不停点击,请求就一直不发,这显然是不科学的,我们就要改进这个函数了。
ACK
2020/01/14
6010
js实现函数防抖与节流
节流:规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
蓓蕾心晴
2020/05/25
1.4K0
相关推荐
手动实现函数节流(throttle)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验