mediapipe.solutions.face_mesh  # 人脸网状检测
mediapipe.solutions.face_detection  # 人脸识别
mediapipe.solutions.hands  # 手部关键点检测
mediapipe.solutions.pose   # 人体姿态检测

mediapipe.solutions.face_detection.FaceDetection()   人脸检测函数
参数:

min_detection_confidence: 默认为 0.5。人脸检测模型的最小置信值 (0-1之间),高于该置信度则将检测视为成功。

返回值:

detections:检测到的人脸的集合,其中每个人脸都表示为一个检测原始消息,其中包含 人脸的概率、1 个边界框、6 个关键点(右眼、左眼、鼻尖、嘴巴中心、右耳、左耳)。边界框由 xmin 和 width (由图像宽度归一化为 [0, 1])以及 ymin 和 height (由图像高度归一化为 [0, 1])组成。每个关键点由 x 和 y 组成,分别通过图像宽度和高度归一化为 [0, 1]。

detections.score: 获取图像是人脸的概率

detections.location_data: 获取识别框的 x, y, w, h 和 6个关键点的 x, y

detections.location_data.relative_bounding_box: 获取识别框的 x, y, w, h

detections.location_data.relative_keypoints: 6个关键点的 x, y 组成的列表

mediapipe.solutions.hands.Hands()  手部关键点检测方法
参数:

static_image_mode: 默认为 False,将输入图像视为视频流。它将尝试在第一个输入图像中检测手,并在成功检测后进一步定位手的坐标。在随后的图像中,一旦检测到所有 max_num_hands 手并定位了相应的手的坐标,它就会跟踪这些坐标,而不会调用另一个检测,直到它失去对任何一只手的跟踪。这减少了延迟,非常适合处理视频帧。如果设置为 True,则在每个输入图像上运行手部检测,用于处理一批静态的、可能不相关的图像。

max_num_hands: 最多检测几只手,默认为2

min_detection_confidence: 手部检测模型的最小置信值(0-1之间),超过阈值则检测成功。默认为 0.5

min_tracking_confidence: 坐标跟踪模型的最小置信值 (0-1之间),用于将手部坐标视为成功跟踪,不成功则在下一个输入图像上自动调用手部检测。将其设置为更高的值可以提高解决方案的稳健性,但代价是更高的延迟。如果 static_image_mode 为真,则忽略这个参数,手部检测将在每个图像上运行。默认为 0.5

返回值:

MULTI_HAND_LANDMARKS: 被检测/跟踪的手的集合,其中每只手被表示为21个手部地标的列表,每个地标由x, y, z组成。x和y分别由图像的宽度和高度归一化为[0,1]。Z表示地标深度。

MULTI_HANDEDNESS: 被检测/追踪的手是左手还是右手的集合。每只手由label(标签)和score(分数)组成。 label 是 'Left' 或 'Right' 值的字符串。 score 是预测左右手的估计概率。

mediapipe.solutions.pose.Pose()  姿态关键点检测函数
参数:

static_image_mode: 默认为 False,将输入图像视为视频流。它将尝试在第一张图像中检测最突出的人,并在成功检测后进一步定位姿势地标。在随后的图像中,它只是简单地跟踪那些地标,而不会调用另一个检测,直到失去对目标的跟踪,可以减少计算和延迟。若为 True,则会对每张输入图像执行人体检测方法,非常适合处理一批静态的、可能不相关的图像。

model_complexity: 默认为 1,姿势地标模型的复杂度:0、1 、2。地标准确度和推理延迟通常随着模型复杂度的增加而增加。

smooth_landmarks: 默认为 True,平滑图像,过滤不同的输入图像上的姿势地标以减少抖动,但如果static_image_mode也设置为 True 则忽略。

upper_body_only: 默认为 False,是否只检测上半身的地标。人体姿势共有33个地标,上半身的姿势地标有25个。

enable_segmentation: 默认为False。如果设置为 true,除了姿势地标之外,该解决方案还会生成分割掩码。

smooth_segmentation:默认为 True,过滤不同的输入图像上的分割掩码以减少抖动,但如果 enable_segmentation 设置为 False,或者 static_image_mode 设置为 True 则忽略。

min_detection_confidence: 默认为 0.5,来自人员检测模型的最小置信值 (0-1之间),高于该阈值则认为检测视为成功。

min_tracking_confidence:默认为 0.5。来自地标跟踪模型的最小置信值 (0-1之间),用于将被视为成功跟踪的姿势地标,否则将在下一个输入图像上自动调用人物检测。将其设置为更高的值可以提高解决方案的稳健性,但代价是更高的延迟。如果 static_image_mode 为 True,则人员检测将在每帧图像上运行。

返回值:

具有 "pose_landmarks" 字段的 NamedTuple 对象,其中包含检测到的最突出人物的姿势坐标。

mediapipe.solutions.drawing_utils.draw_landmarks() # 可视化函数

image: 需要画图的原始图片

landmark_list: 检测到的关键点坐标

connections: 连接线,需要把那些坐标连接起来

landmark_drawing_spec: 坐标的颜色,粗细

connection_drawing_spec: 连接线的粗细,颜色等

import time
import cv2
import mediapipe as mp
# (1)视频捕获
cap = cv2.VideoCapture(0)  # 0代表电脑自带的摄像头# (2)创建检测关键点的方法
Models = mp.solutions.hands  # 检测方法
Model = Models.Hands(static_image_mode=False,  # 静态追踪,低于0.5置信度会再一次跟踪max_num_hands=2,  # 最多有2只手min_detection_confidence=0.5,  # 最小检测置信度min_tracking_confidence=0.5)  # 最小跟踪置信度# 创建检测手部关键点和关键点之间连线的方法
mpDraw = mp.solutions.drawing_utils# 查看时间
pTime = 0  # 处理一张图像前的时间
cTime = 0  # 一张图处理完的时间# (3)处理视频图像
while True:  # 对每一帧视频图像处理# 返回是否读取成功和读取的图像success, img = cap.read()# 在循环中发送rgb图像到hands中,opencv中图像默认是BGR格式imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# 把图像传入检测模型,提取信息results = Model.process(imgRGB)# 检查是否检测到什么东西了,没有检测到手就返回None# print(results.multi_hand_landmarks)# 检查每帧图像是否有多只手,一一提取它们if results.multi_hand_landmarks:  # 如果没有手就是Nonefor handlms in results.multi_hand_landmarks:# (4)获取每个关键点的索引和坐标for index, lm in enumerate(handlms.landmark):# 索引为0代表手底部中间部位,为4代表手指关键或指尖# 输出21个手部关键点的xyz坐标(0-1之间),是相对于图像的长宽比例# print(index, lm)  # 只需使用x和y查找位置信息# 将xy的比例坐标转换成像素坐标h, w, c = img.shape # 分别存放图像长\宽\通道数# 中心坐标(小数),必须转换成整数(像素坐标)cx ,cy =  int(lm.x * w), int(lm.y * h) #比例坐标x乘以宽度得像素坐标# 打印显示21个关键点的像素坐标print(index, cx, cy)# 存储坐标信息lmList.append([index, cx, cy])# 在21个关键点上换个圈,img画板,坐标(cx,cy),半径5,蓝色填充cv2.circle(img, (cx,cy), 12, (0,0,255), cv2.FILLED)# 绘制每只手的关键点mpDraw.draw_landmarks(img, handlms, Models.HAND_CONNECTIONS)  # 传入想要绘图画板img,单只手的信息handlms# mpHands.HAND_CONNECTIONS绘制手部关键点之间的连线# 记录执行时间cTime = time.time()# 计算fpsfps = 1 / (cTime - pTime)# 重置起始时间pTime = cTime# 把fps显示在窗口上;img画板;取整的fps值;显示位置的坐标;设置字体;字体比例;颜色;厚度cv2.putText(img, str(int(fps)), (10, 70), cv2.FONT_HERSHEY_PLAIN, 3, (255, 0, 0), 3)# 显示图像cv2.imshow('Image', img)  # 窗口名,图像变量if cv2.waitKey(1) & 0xFF == 27:  # 每帧滞留1毫秒后消失;ESC键退出break# 释放视频资源
cap.release()
cv2.destroyAllWindows()

视觉检测【MdeiaPipe】相关推荐

  1. 品质检测破局:工业视觉检测云平台为智能制造“点睛”

    微波炉角落里的型号编码.空调背面不显眼的小螺钉.冰箱侧身的标签,它们的质量检测是生产线中最费人工的地方,也是制约智能制造的老大难. 如果哪天这类瑕疵检测不再需要人工,这样的制造就真的称得上智能.最近, ...

  2. 工业视觉检测发展的现状

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 机器视觉依据应用不同可GIDI-G(Guidance-导引).I( ...

  3. 基于相机和激光传感器的车顶视觉检测系统

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 像多单元高速列车这样的现代轨道车辆需要定期进行 ...

  4. 从视觉检测窥探人类大脑和数字大脑的差别

    非常开心,我能够借Robotiq公司的官方博客揭开自动化的神秘面纱,并帮助大家初步认识和感知自动化这个理念.希望在读完这篇文章后,您能对自动化视觉检测系统有更多的了解. 记得在一个图像处理的会议上,一 ...

  5. 实时获取ccd图像_四元数数控:CCD视觉检测定位系统在玻璃瓶缺陷的检测

    酷暑难耐,来一杯冰爽的饮料或者啤酒让人透心沁爽,无疑是消暑的好方法.通常,作为饮料或啤酒的容器多为塑料瓶或者玻璃瓶,而玻璃瓶作为一种可回收.更干净的盛装载体更受到许多人的青睐.在一些饮料或者是奶制品中 ...

  6. 直播 | 商汤科技X-Lab宋广录:大规模视觉检测任务的检测器设计与优化

    「Industry AI Live」是 biendata 与人工智能媒体 PaperWeekly 共同发起的学术直播栏目,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一 ...

  7. 2020 年 AI 视觉检测的应用价值

    简介:近十年来,制造商为了不断提升他们的利润,已经纷纷转向自动化解决方案.自动化和机器视觉正在逐步增强,甚至被人工智能所取代.下面,让我们看看 2020 年基于人工智能的视觉检测的应用价值. 近十年来 ...

  8. hough变换检测圆周_【视觉】视觉检测人应该了解的缺陷检测方法

    本文参考并摘引:李少波, 杨静, 王铮, 朱书德, 杨观赐. 缺陷检测技术的发展与应用研究综述. 自动化学报, 2020, 46(11): 2319−2336. doi: 10.16383/j.aas ...

  9. 识别产品外观的合格软件_产品外观质量视觉检测系统.PDF

    产品外观质量视觉检测系统 产品外观质量视觉检测系统 北京大恒图像视觉有限公司 Beijing Daheng Image Vision Co., Ltd 公司简介 中国大恒(集团)有限公司是中国科学院于 ...

  10. ccd视觉定位教程_CCD视觉检测机有哪些作用?

    伴随着视觉检测机在工业生产制造中的逐渐运用,如今工业生产制造也开始逐渐向自动化的方向进行靠拢.那么,视觉检测机有什么样的作用?今天,就来为大伙儿解答一下. 视觉检测系统是指利用CCD工业镜头将被摄取目 ...

最新文章

  1. 用Python爬取42年数据,告诉你高考有多难!
  2. NBT:宏基因组读云建库+雅典娜算法组装获得微生物高质量基因组
  3. centos安装后两个启动项、_centos8的启动项配置
  4. LeetCode -- 3Sum
  5. 如何读懂并写出装逼的函数式代码 1
  6. 如何在《救赎之路》中使用CPU粒子效果
  7. js中函数的三种定义方式、函数声明、函数同名重复、函数删除、
  8. Swager登陆跳转了login登陆页面
  9. 量子加密_量子强化加密协议
  10. 解决启动CAD时没有响应
  11. 学习uni-app之微信登录
  12. namecheap域名解析
  13. 重磅!五大电力央企“一把手”华山论剑深谈数字化转型
  14. 14 数据库高可用
  15. xampp 安装swoole
  16. canal 重启后不同步数据
  17. matlab中函数的定义和使用
  18. 从一路赞美到嘘声不断 90后创业热潮已宣告死亡
  19. 宝宝生活点滴(2009.11)
  20. 模电笔记1:半导体基础知识

热门文章

  1. 萤火学堂视频:硬件设计-PCB原理图简要讲解
  2. 51单片机串口通讯详解
  3. 毕业论文计算机专业3500字,关于计算机专业论文开题报告格式
  4. 数值类型翻转教学设计
  5. 「专升本信息技术」计算机基础知识习题(2)
  6. 7-95 拔河比赛 (100分)
  7. 大神驾到 | 腾讯光子大牛的 Cocos Creator 网络通用框架(强势围观)
  8. 并购之后,百度将如何“处理”91无线?
  9. 用野火板子下载程序出现Error: Flash Download failed - “Cortex-M3”
  10. 错误:登录异常,异常信息:对路径“C:Program Files (x86)IIS ExpressLogInfo.obj”的访问被拒绝