内蒙古做网站找谁,网站服务器停止响应怎么办,wordpress快速,展厅效果图 展厅设计图片计算机视觉之手势、面部、姿势捕捉以 Python Mediapipe为工具 文章目录 1.Mediapipe库概述2.手势捕捉(hands)3.面部捕捉(face)4.姿势捕捉(pose) 1.Mediapipe库概述
Mediapipe是一个开源且强大的Python库#xff0c;由Google开发和维护。它提供了丰富的工具和功能#xff0c…计算机视觉之手势、面部、姿势捕捉以 Python Mediapipe为工具 文章目录 1.Mediapipe库概述2.手势捕捉(hands)3.面部捕捉(face)4.姿势捕捉(pose) 1.Mediapipe库概述
Mediapipe是一个开源且强大的Python库由Google开发和维护。它提供了丰富的工具和功能用于处理实时多媒体数据。它可以帮助开发者快速构建各种视觉和音频处理应用并允许他们灵活地定制和扩展库的功能。
Mediapipe库的主要功能包括
视觉处理Mediapipe可以进行人脸检测、姿势估计、手部跟踪等。它通过使用预训练的模型和算法来分析图像或视频并提供相应的结果。这使得开发者能够轻松地实现各种视觉处理任务。音频处理Mediapipe还可以进行音频信号的处理例如语音识别、音频增强、语音转换等。它提供了一些内置的音频处理模块开发者可以使用这些模块来快速构建自己的音频处理流水线。数据流处理Mediapipe库还提供了一套用于处理数据流的工具。开发者可以使用这些工具来构建复杂的数据处理流程包括数据的输入、输出、转换和合并等。这使得开发者能够更方便地处理实时多媒体数据流。
本期博客作者将分享使用Mediapipe库实现手势、面部、动作识别的方法。 2.手势捕捉(hands)
该段代码使用OpenCV和MediaPipe库来检测摄像头视频中的手部并在图像上绘制关键点和连接线。
import cv2
import time
import mediapipe as mpcapture cv2.VideoCapture(0)
mpHands mp.solutions.hands
hands mpHands.Hands()
mpDraw mp.solutions.drawing_utils
pTime 0
cTime 0while (capture.isOpened()):retval, img capture.read()imgRGB cv2.cvtColor(img, cv2.COLOR_BGR2RGB)results hands.process(imgRGB)if results.multi_hand_landmarks:for handLms in results.multi_hand_landmarks:for id, lm in enumerate(handLms.landmark):h, w, c img.shapecx, cy int(lm.x * w), int(lm.y * h)cv2.circle(img, (cx, cy), 15, (0, 255, 0), cv2.FILLED)mpDraw.draw_landmarks(img, handLms, mpHands.HAND_CONNECTIONS)cTime time.time()fps 1 / (cTime - pTime)pTime cTimecv2.putText(img, fps:str(int(fps)), (10, 70), cv2.FONT_HERSHEY_PLAIN, 2,(0, 0, 255), 2)cv2.imshow(Video, img) key cv2.waitKey(1)if key 32:breakcapture.release()
cv2.destroyAllWindows()效果展示 关于代码具体解释如下 导入所需的库 cv2用于处理图像和视频的OpenCV库。time用于计算帧率的Python标准库。mediapipe as mpMediaPipe库用于手部检测和姿态估计。 创建视频捕获对象 使用cv2.VideoCapture(0)创建一个视频捕获对象参数0表示使用默认摄像头。 初始化MediaPipe手部检测器 使用mp.solutions.hands.Hands()创建一个手部检测器对象。hands.process(imgRGB)将每个视频帧传递给检测器进行处理并返回检测结果。 处理每个视频帧 使用capture.read()读取视频帧并将返回的结果存储在retval和img变量中。使用cv2.cvtColor(img, cv2.COLOR_BGR2RGB)将图像从BGR格式转换为RGB格式以便与MediaPipe兼容。使用hands.process(imgRGB)对图像进行手部检测返回结果保存在results变量中。 绘制检测结果 使用results.multi_hand_landmarks判断是否检测到了手部。对于每个检测到的手部使用handLms.landmark遍历所有关键点并将其坐标从归一化坐标转换为图像上的实际坐标。使用cv2.circle()在图像中绘制关键点圆圈。使用mpDraw.draw_landmarks()在图像中绘制手部关键点和连接线。 计算帧率 使用time.time()获取当前时间戳计算时间间隔以确定帧率。使用cv2.putText()在图像上显示帧率。 显示图像并等待按键 使用cv2.imshow()显示处理后的图像。使用cv2.waitKey(1)等待用户按键参数1表示等待1毫秒。 释放资源 在循环结束后使用capture.release()释放视频捕获对象。使用cv2.destroyAllWindows()关闭所有窗口。 退出程序 按下空格键32可以退出程序。 3.面部捕捉(face)
该段代码使用OpenCV和MediaPipe库来检测摄像头视频中的人脸并在图像上绘制人脸关键点和轮廓。
import cv2
import time
import mediapipe as mpcapture cv2.VideoCapture(0)mpFaceMesh mp.solutions.face_mesh
faceMesh mpFaceMesh.FaceMesh()
mpDraw mp.solutions.drawing_utilspTime 0 # 上一帧的时间
cTime 0 # 下一帧的时间while (capture.isOpened()):retval, img capture.read()imgRGB cv2.cvtColor(img, cv2.COLOR_BGR2RGB)results faceMesh.process(imgRGB)if results.multi_face_landmarks:for faceLms in results.multi_face_landmarks:for id, lm in enumerate(faceLms.landmark):h, w, c img.shapecx, cy int(lm.x * w), int(lm.y * h)# cv2.circle(img, (cx, cy), 15, (0, 255, 0), cv2.FILLED)mpDraw.draw_landmarks(img, faceLms, mpFaceMesh.FACEMESH_CONTOURS)cTime time.time()fps 1 / (cTime - pTime)pTime cTimecv2.putText(img, fps: str(int(fps)), (10, 60), cv2.FONT_HERSHEY_PLAIN, 3, (0, 0, 255), 3)cv2.imshow(Video, img)key cv2.waitKey(1)if key 32:breakcapture.release()
cv2.destroyAllWindows()以电影情节画面替代摄像头画面代码效果展示如下 以下是代码的解释 导入所需的库 cv2用于处理图像和视频的OpenCV库。time用于计算帧率的标准Python库。mediapipe as mpMediaPipe库用于人脸检测和特征点估计。 创建视频捕获对象 使用cv2.VideoCapture(0)创建一个视频捕获对象参数0表示使用默认摄像头。 初始化MediaPipe人脸检测器 使用mp.solutions.face_mesh.FaceMesh()创建一个人脸检测器对象。faceMesh.process(imgRGB)将每个视频帧传递给检测器进行处理并返回检测结果。 处理每个视频帧 使用capture.read()读取视频帧并将返回的结果存储在retval和img变量中。使用cv2.cvtColor(img, cv2.COLOR_BGR2RGB)将图像从BGR格式转换为RGB格式以便与MediaPipe兼容。使用faceMesh.process(imgRGB)对图像进行人脸检测返回结果保存在results变量中。 绘制检测结果 使用results.multi_face_landmarks判断是否检测到了人脸。对于每个检测到的人脸使用faceLms.landmark遍历所有关键点并将其坐标从归一化坐标转换为图像上的实际坐标。使用mpDraw.draw_landmarks()在图像中绘制人脸关键点和轮廓。 计算帧率 使用time.time()获取当前时间戳计算时间间隔以确定帧率。使用cv2.putText()在图像上显示帧率。 显示图像并等待按键 使用cv2.imshow()显示处理后的图像。使用cv2.waitKey(1)等待用户按键参数1表示等待1毫秒。 释放资源 在循环结束后使用capture.release()释放视频捕获对象。使用cv2.destroyAllWindows()关闭所有窗口。 退出程序 按下空格键32可以退出程序。 4.姿势捕捉(pose)
该段代码使用OpenCV和MediaPipe库来检测摄像头视频中的人体姿势并在图像上绘制关键点和连接线。
import cv2
import time
import mediapipe as mpvideo cv2.VideoCapture(0)
mpPose mp.solutions.pose
pose mpPose.Pose()
mpDraw mp.solutions.drawing_utilspTime 0 # 上一帧的时间
cTime 0 # 下一帧的时间while True:retval, img video.read()imgRGB cv2.cvtColor(img, cv2.COLOR_BGR2RGB)results pose.process(imgRGB)if results.pose_landmarks:for id, lm in enumerate(results.pose_landmarks.landmark):h, w, c img.shapecx, cy int(lm.x * w), int(lm.y * h)cv2.circle(img, (cx, cy), 15, (0, 255, 0), cv2.FILLED)mpDraw.draw_landmarks(img, results.pose_landmarks, mpPose.POSE_CONNECTIONS)cTime time.time()fps 1 / (cTime - pTime)pTime cTimecv2.putText(img, fps: str(int(fps)), (10, 60), cv2.FONT_HERSHEY_PLAIN, 3, (0, 0, 255), 3)cv2.imshow(Video, img)key cv2.waitKey(10)if key 32:breakvideo.release()
cv2.destroyAllWindows()效果展示 以下是代码的解释 导入所需的库 cv2用于处理图像和视频的OpenCV库。time用于计算帧率的标准Python库。mediapipe as mpMediaPipe库用于人体姿势检测。 创建视频捕获对象 使用cv2.VideoCapture(0)创建一个视频捕获对象参数0表示使用默认摄像头。 初始化MediaPipe人体姿势检测器 使用mp.solutions.pose.Pose()创建一个人体姿势检测器对象。pose.process(imgRGB)将每个视频帧传递给检测器进行处理并返回检测结果。 处理每个视频帧 使用video.read()读取视频帧并将返回的结果存储在retval和img变量中。使用cv2.cvtColor(img, cv2.COLOR_BGR2RGB)将图像从BGR格式转换为RGB格式以便与MediaPipe兼容。使用pose.process(imgRGB)对图像进行人体姿势检测返回结果保存在results变量中。 绘制检测结果 使用results.pose_landmarks判断是否检测到了人体姿势。对于每个检测到的关键点使用landmark遍历所有关键点并将其坐标从归一化坐标转换为图像上的实际坐标。使用cv2.circle()在图像中绘制关键点圆圈。使用mpDraw.draw_landmarks()在图像中绘制人体姿势关键点和连接线。 计算帧率 使用time.time()获取当前时间戳计算时间间隔以确定帧率。使用cv2.putText()在图像上显示帧率。 显示图像并等待按键 使用cv2.imshow()显示处理后的图像。使用cv2.waitKey(10)等待用户按键参数10表示等待10毫秒。 释放资源 在循环结束后使用video.release()释放视频捕获对象。使用cv2.destroyAllWindows()关闭所有窗口。 退出程序 按下空格键32可以退出程序。 附侯小啾Python基础领航计划专栏已上线特价专栏只需9.9即可扫清入门路上一切障碍。 跟着小啾入门无忧无论是系统化学习还是碎片化学习都是很好的选择点击下方链接即可订阅 https://blog.csdn.net/weixin_48964486/category_12510091.html 更多精彩内容敬请期待作者侯小啾持续为您推出