google-ai-edge / mediapipe

Cross-platform, customizable ML solutions for live and streaming media.
https://ai.google.dev/edge/mediapipe
Apache License 2.0
27.51k stars 5.15k forks source link

Build issue windows using mp.solutions.hands #3083

Closed CharlesbrownK closed 2 years ago

CharlesbrownK commented 2 years ago

This is my first issue report, so please understand if it's not enough.

import cv2
import mediapipe as mp
import time

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

mpHands = mp.solutions.hands
hands = mpHands.Hands()
mpDraw = mp.solutions.drawing_utils

while True:
    success, img = cap.read()
    imgRGB = cv2.cvtColor(img, cv2.COLOLR_BGR2RGB)
    results = hands.process(imgRGB)

    if results.multi_hands_landmarks:
        for handLms in results.multi_hands_landmarks:
            mpDraw.draw_landmarks(img, handLms)

    cv2.imshow("Image", img)
    cv2.waitKey(1)

I am trying to run a face detector program from the cvzone in PyCharm. The code above corresponds to an intermediate process for implementing a face detector. But this is the error that occurred when I ran the above code.

Traceback (most recent call last):
  File "C:/Users/ekjh0/Desktop/programming/python/ai/face_detection/main.py", line 8, in <module>
    hands = mpHands.Hands()
  File "C:\Users\ekjh0\Desktop\programming\python\ai\venv\lib\site-packages\mediapipe\python\solutions\hands.py", line 129, in __init__
    'multi_handedness'
  File "C:\Users\ekjh0\Desktop\programming\python\ai\venv\lib\site-packages\mediapipe\python\solution_base.py", line 237, in __init__
    validated_graph.initialize(binary_graph_path = os.path.join(root_path, binary_graph_path))
FileNotFoundError: The path does not exist.

I think there is no problem with the code I wrote. I have no idea how to fix it... 😢😢😢 Can you please fix this error?

sgowroji commented 2 years ago

Hi @CharlesbrownK, This is the python sample code for face detection https://google.github.io/mediapipe/solutions/face_detection.html#python-solution-api. And above i see you are using MediaPipe Hands API.

CharlesbrownK commented 2 years ago

But also that code makes the same error.

Traceback (most recent call last):
  File "C:/Users/ekjh0/Desktop/programming/python/ai/face_detection/main.py", line 8, in <module>
    hands = mpHands.Hands()
  File "C:\Users\ekjh0\Desktop\programming\python\ai\venv\lib\site-packages\mediapipe\python\solutions\hands.py", line 129, in __init__
    'multi_handedness'
  File "C:\Users\ekjh0\Desktop\programming\python\ai\venv\lib\site-packages\mediapipe\python\solution_base.py", line 237, in __init__
    validated_graph.initialize(binary_graph_path = os.path.join(root_path, binary_graph_path))
FileNotFoundError: The path does not exist.

binary_graph_path = os.path.join(root_path, binary_graph_path) I think this path makes this error. How can I solve it?

sgowroji commented 2 years ago

Yes Use the latest code changes from here https://google.github.io/mediapipe/solutions/face_detection.html#python-solution-api. It's not updated with the latest. There is no COLOLR_BGR2RGB attribute in cv2.

CharlesbrownK commented 2 years ago

Oh... That's my mistake.

I changed my code the same as what you give a link.

import cv2
import mediapipe as mp
mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils

# For static images:
IMAGE_FILES = []
with mp_face_detection.FaceDetection(
    model_selection=1, min_detection_confidence=0.5) as face_detection:
  for idx, file in enumerate(IMAGE_FILES):
    image = cv2.imread(file)
    # Convert the BGR image to RGB and process it with MediaPipe Face Detection.
    results = face_detection.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

    # Draw face detections of each face.
    if not results.detections:
      continue
    annotated_image = image.copy()
    for detection in results.detections:
      print('Nose tip:')
      print(mp_face_detection.get_key_point(
          detection, mp_face_detection.FaceKeyPoint.NOSE_TIP))
      mp_drawing.draw_detection(annotated_image, detection)
    cv2.imwrite('/tmp/annotated_image' + str(idx) + '.png', annotated_image)

# For webcam input:
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
with mp_face_detection.FaceDetection(
    model_selection=0, min_detection_confidence=0.5) as face_detection:
  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

    # To improve performance, optionally mark the image as not writeable to
    # pass by reference.
    image.flags.writeable = False
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    results = face_detection.process(image)

    # Draw the face detection annotations on the image.
    image.flags.writeable = True
    image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
    if results.detections:
      for detection in results.detections:
        mp_drawing.draw_detection(image, detection)
    # Flip the image horizontally for a selfie-view display.
    cv2.imshow('MediaPipe Face Detection', cv2.flip(image, 1))
    if cv2.waitKey(5) & 0xFF == 27:
      break

cap.release()

When I ran the above code, I met the same error...

Traceback (most recent call last):
  File "C:/Users/ekjh0/Desktop/programming/python/ai/face_detection/test.py", line 9, in <module>
    model_selection=1, min_detection_confidence=0.5) as face_detection:
  File "C:\Users\ekjh0\Desktop\programming\python\ai\venv\lib\site-packages\mediapipe\python\solutions\face_detection.py", line 95, in __init__
    outputs=['detections'])
  File "C:\Users\ekjh0\Desktop\programming\python\ai\venv\lib\site-packages\mediapipe\python\solution_base.py", line 237, in __init__
    validated_graph.initialize(binary_graph_path = os.path.join(root_path, binary_graph_path))
FileNotFoundError: The path does not exist.

How can I solve this error?

sureshdagooglecom commented 2 years ago

Hi @CharlesbrownK , This is issue can be resolved in the latest version of MediaPipe , could you please check and close this issue.

google-ml-butler[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you.

google-ml-butler[bot] commented 2 years ago

Are you satisfied with the resolution of your issue? Yes No