今天给大家介绍一下python+mediapipe+opencv如何实现手部关键点检测功能。,文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。
一、mediapipe是什么?
Mediapipe是google的一个开源项目,支持跨平台的常用ML方案。
二、使用步骤
1.引入库
代码如下:
import cv2from mediapipe import solutionsimport time
2.主代码
代码如下:
cap = cv2.VideoCapture(0)mpHands = solutions.handshands = mpHands.Hands()mpDraw = solutions.drawing_utilspTime = 0count = 0while True: success, img = cap.read() imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) results = hands.process(imgRGB) if results.multi_hand_landmarks: for handLms in results.multi_hand_landmarks: mpDraw.draw_landmarks(img, handLms, mpHands.HAND_CONNECTIONS) cTime = time.time() fps = 1 / (cTime - pTime) pTime = cTime cv2.putText(img, str(int(fps)), (25, 50), cv2.FONT_HERSHEY_PLAIN, 2, (255, 0, 0), 3) cv2.imshow("Image", img) cv2.waitKey(1)
3.识别结果
以上就是今天要讲的内容,本文仅仅简单介绍了mediapipe的使用,而mediapipe提供了大量关于图像识别等的方法。
补充:
下面看下基于mediapipe人脸网状识别。
下载mediapipe库:
pip install mediapipe
完整代码:
import cv2import mediapipe as mpimport timemp_drawing = mp.solutions.drawing_utilsmp_face_mesh = mp.solutions.face_meshdrawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1)cap = cv2.VideoCapture("3.mp4")with mp_face_mesh.FaceMesh( min_detection_confidence=0.5, min_tracking_confidence=0.5) as face_mesh: while cap.isOpened(): success, image = cap.read() if not success: print("Ignoring empty camera frame.") # If loading a video, use 'break' instead of 'continue'. continue # Flip the image horizontally for a later selfie-view display, and convert # the BGR image to RGB. image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB) # To improve performance, optionally mark the image as not writeable to # pass by reference. image.flags.writeable = False results = face_mesh.process(image) time.sleep(0.02) # Draw the face mesh annotations on the image. image.flags.writeable = True image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) if results.multi_face_landmarks: for face_landmarks in results.multi_face_landmarks: mp_drawing.draw_landmarks( image=image, landmark_list=face_landmarks, connections=mp_face_mesh.FACE_CONNECTIONS, landmark_drawing_spec=drawing_spec, connection_drawing_spec=drawing_spec) cv2.imshow('MediaPipe FaceMesh', image) if cv2.waitKey(5) & 0xFF == 27: breakcap.release()
以上就是python+mediapipe+opencv如何实现手部关键点检测功能的全部内容了,更多与python+mediapipe+opencv如何实现手部关键点检测功能相关的内容可以搜索编程网之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下编程网!