视觉检测【MdeiaPipe】
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】相关推荐
- 品质检测破局:工业视觉检测云平台为智能制造“点睛”
微波炉角落里的型号编码.空调背面不显眼的小螺钉.冰箱侧身的标签,它们的质量检测是生产线中最费人工的地方,也是制约智能制造的老大难. 如果哪天这类瑕疵检测不再需要人工,这样的制造就真的称得上智能.最近, ...
- 工业视觉检测发展的现状
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 机器视觉依据应用不同可GIDI-G(Guidance-导引).I( ...
- 基于相机和激光传感器的车顶视觉检测系统
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 像多单元高速列车这样的现代轨道车辆需要定期进行 ...
- 从视觉检测窥探人类大脑和数字大脑的差别
非常开心,我能够借Robotiq公司的官方博客揭开自动化的神秘面纱,并帮助大家初步认识和感知自动化这个理念.希望在读完这篇文章后,您能对自动化视觉检测系统有更多的了解. 记得在一个图像处理的会议上,一 ...
- 实时获取ccd图像_四元数数控:CCD视觉检测定位系统在玻璃瓶缺陷的检测
酷暑难耐,来一杯冰爽的饮料或者啤酒让人透心沁爽,无疑是消暑的好方法.通常,作为饮料或啤酒的容器多为塑料瓶或者玻璃瓶,而玻璃瓶作为一种可回收.更干净的盛装载体更受到许多人的青睐.在一些饮料或者是奶制品中 ...
- 直播 | 商汤科技X-Lab宋广录:大规模视觉检测任务的检测器设计与优化
「Industry AI Live」是 biendata 与人工智能媒体 PaperWeekly 共同发起的学术直播栏目,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一 ...
- 2020 年 AI 视觉检测的应用价值
简介:近十年来,制造商为了不断提升他们的利润,已经纷纷转向自动化解决方案.自动化和机器视觉正在逐步增强,甚至被人工智能所取代.下面,让我们看看 2020 年基于人工智能的视觉检测的应用价值. 近十年来 ...
- hough变换检测圆周_【视觉】视觉检测人应该了解的缺陷检测方法
本文参考并摘引:李少波, 杨静, 王铮, 朱书德, 杨观赐. 缺陷检测技术的发展与应用研究综述. 自动化学报, 2020, 46(11): 2319−2336. doi: 10.16383/j.aas ...
- 识别产品外观的合格软件_产品外观质量视觉检测系统.PDF
产品外观质量视觉检测系统 产品外观质量视觉检测系统 北京大恒图像视觉有限公司 Beijing Daheng Image Vision Co., Ltd 公司简介 中国大恒(集团)有限公司是中国科学院于 ...
- ccd视觉定位教程_CCD视觉检测机有哪些作用?
伴随着视觉检测机在工业生产制造中的逐渐运用,如今工业生产制造也开始逐渐向自动化的方向进行靠拢.那么,视觉检测机有什么样的作用?今天,就来为大伙儿解答一下. 视觉检测系统是指利用CCD工业镜头将被摄取目 ...
最新文章
- 用Python爬取42年数据,告诉你高考有多难!
- NBT:宏基因组读云建库+雅典娜算法组装获得微生物高质量基因组
- centos安装后两个启动项、_centos8的启动项配置
- LeetCode -- 3Sum
- 如何读懂并写出装逼的函数式代码 1
- 如何在《救赎之路》中使用CPU粒子效果
- js中函数的三种定义方式、函数声明、函数同名重复、函数删除、
- Swager登陆跳转了login登陆页面
- 量子加密_量子强化加密协议
- 解决启动CAD时没有响应
- 学习uni-app之微信登录
- namecheap域名解析
- 重磅!五大电力央企“一把手”华山论剑深谈数字化转型
- 14 数据库高可用
- xampp 安装swoole
- canal 重启后不同步数据
- matlab中函数的定义和使用
- 从一路赞美到嘘声不断 90后创业热潮已宣告死亡
- 宝宝生活点滴(2009.11)
- 模电笔记1:半导体基础知识
热门文章
- 萤火学堂视频:硬件设计-PCB原理图简要讲解
- 51单片机串口通讯详解
- 毕业论文计算机专业3500字,关于计算机专业论文开题报告格式
- 数值类型翻转教学设计
- 「专升本信息技术」计算机基础知识习题(2)
- 7-95 拔河比赛 (100分)
- 大神驾到 | 腾讯光子大牛的 Cocos Creator 网络通用框架(强势围观)
- 并购之后,百度将如何“处理”91无线?
- 用野火板子下载程序出现Error: Flash Download failed - “Cortex-M3”
- 错误:登录异常,异常信息:对路径“C:Program Files (x86)IIS ExpressLogInfo.obj”的访问被拒绝