人脸检测:正脸侧脸、是否仰头低头判断

2024-01-10 14:04

本文主要是介绍人脸检测:正脸侧脸、是否仰头低头判断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 鼻子与两眼的向量正交时,设交点为a,理想情况下两眼到a距离的比值应该为1。
    • 考虑到大脸和小脸,我们设m为两眼中心点,则判断是否是正脸侧脸式子为: d i s = ( a − m ) 2 ( x 1 − x 2 ) 2 dis = \frac{(a-m)^2}{(x1-x2)^2} dis=(x1x2)2(am)2
  • 设b为鼻子到嘴角向量正交时的交点,则鼻子到a的距离和到b的距离在不仰头低头情况下存在一定比例关系,并且应该在[1,2]之间。
    • 数值越大,头越低。
    def is_front_face(keypoints):# keypoints: 人脸关键点(左眼、右眼、鼻子、左嘴角、右嘴角)# 侧脸判断a = orthogonal_point(keypoints[0], keypoints[1], keypoints[2])# dis_front = abs(np.log(np.linalg.norm(keypoints[0] - a) / np.linalg.norm(keypoints[1] - a)))m = (keypoints[0] + keypoints[1]) / 2dis_front = np.linalg.norm(a - m) / np.maximum(np.linalg.norm(keypoints[0] - keypoints[1]), 1e-10)if dis_front > 0.5:return False# 抬头低头判断b = orthogonal_point(keypoints[3], keypoints[4], keypoints[2])dis_bow = np.linalg.norm(keypoints[2] - a) / np.maximum(np.linalg.norm(keypoints[2] - b), 1e-10)if dis_bow > 2.2 or dis_bow < 0.7:return Falsereturn Truedef orthogonal_point(x1, x2, x3):x1, y1 = x1[0], x1[1]x2, y2 = x2[0], x2[1]x3, y3 = x3[0], x3[1]# conb, lambdax = np.linalg.solve(np.array([[1, x1], [1, x2]]), np.array([y1, y2]))lambdax = (y2 - y1) / np.maximum((x2 - x1), 1e-10)conb = y1 - lambdax * x1ax = (x3 * (x2 - x1) + y3 * (y2 - y1) - (y2 - y1) * conb) / np.maximum((x2 - x1) + (y2 - y1) * lambdax, 1e-10)ay = lambdax * ax + conbreturn np.array([ax, ay])

这篇关于人脸检测:正脸侧脸、是否仰头低头判断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/591052

相关文章

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Python如何判断字符串中是否包含特殊字符并替换

《Python如何判断字符串中是否包含特殊字符并替换》这篇文章主要为大家详细介绍了如何使用Python实现判断字符串中是否包含特殊字符并使用空字符串替换掉,文中的示例代码讲解详细,感兴趣的小伙伴可以了... 目录python判断字符串中是否包含特殊字符方法一:使用正则表达式方法二:手动检查特定字符Pytho

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用