| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【机器视觉案例】(13) 脸部和摄像机间的距离测量,自适应文本大小,附python完整代码 -> 正文阅读 |
|
[人工智能]【机器视觉案例】(13) 脸部和摄像机间的距离测量,自适应文本大小,附python完整代码 |
各位同学好,今天和大家分享一下如何使用 opencv+Mediapipe 测量人脸和摄像机镜头之间的距离,并创建一块根据人脸距离变化的文本框。先放张图看效果。 左图是视频图像,显示人脸和摄像机之间的距离distance;右图是文本框,人脸和相机之间距离越近,则字体和行距越小,距离越远,字体和行距越大。 1. 安装工具包
2. 脸部关键点检测(1)cvzone.FaceMeshModule.FaceMeshDetector() ?人脸关键点检测方法 参数: staticMode: 默认为 False,将输入图像视为视频流。它将尝试在第一个输入图像中检测人脸,并在成功检测后进一步定位468个关键点的坐标。在随后的图像中,一旦检测到所有 maxFaces 张脸并定位了相应的关键点的坐标,它就会跟踪这些坐标,而不会调用另一个检测,直到它失去对任何一张脸的跟踪。这减少了延迟,非常适合处理视频帧。如果设置为 True,则在每个输入图像上运行脸部检测,用于处理一批静态的、可能不相关的图像。 maxFaces: 最多检测几张脸,默认为 2 minDetectionCon=0.5: 脸部关键点检测模型的最小置信值(0-1之间),超过阈值则检测成功。默认为 0.5 minTrackCon=0.5: 关键点坐标跟踪模型的最小置信值 (0-1之间),用于将手部坐标视为成功跟踪,不成功则在下一个输入图像上自动调用手部检测。将其设置为更高的值可以提高解决方案的稳健性,但代价是更高的延迟。如果 mode 为 True,则忽略这个参数,手部检测将在每个图像上运行。默认为 0.5 (2)cvzone.FaceMeshModule.FaceMeshDetector.findFaceMesh() ?找到人脸关键点 参数: img: 需要检测关键点的帧图像,格式为BGR draw: 是否需要在原图像上绘制关键点及连线 返回值: img: 返回绘制了关键点及连线后的图像 faces: 检测到的脸部信息,三维列表,包含每张脸的468个关键点。 (3)距离测量方法 由下图距离测量公式可知,现在要求实际距离 d,可通过相似三角形,利用人脸两眼之间的距离来推算人脸距离摄像机的实际距离。 人两眼之间的实际距离为W=63mm,相机视角下图像上人眼的两个关键点之间的距离w。 在求实时距离 d 之前我们需要知道相机焦距 f,又因为相机焦距 f 是固定不变的,那么我们先以固定的人脸和相机距离计算出 f ,取各个帧 f 的平均值,得到相机焦距 焦距计算公式:,这里的d是一个固定值 实际距离计算公式:,使用估算出的焦距的平均值用来计算实时的距离 代码如下:
效果图如下:左图是detector.findFaceMesh(img, draw=True)时检测出的人脸关键点和连线,我们只需要用到两眼之间的距离。如右图,设置参数draw=True,不绘制人脸网,只绘制两眼之间的连线。 3. 距离测量,制作自适应文本框在上一节中我们以实际距离d=40cm,计算出了每一帧图像的相机焦距,取其平均值 f=700 作为相机焦距计算实时的人脸距离?。使用 cvzone.putTextRect() 函数将距离值显示在人脸额头部位。 接下来创建一个和帧图像相同size的,像素值全为0(黑色)的图像 np.zeros_like(img),作为显示文本的底板。 如下面代码中的第(4)步,singleHeight = 50 + int(d/2) 每行文本初始距离为50,根据人脸距离实时变化。scale = 1 + int(d/20)? 文本字体的大小初始是1,根据人脸距离动态调整 在上述代码中补充:
效果图如下,人脸距离摄像机越近,则文本越小;人脸距离摄像机越远,则字体越大。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 14:34:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |