关于计算机视觉

问题描述 投票:0回答:1

当我运行这个程序时:

# Importing Libraries 
import cv2 
import mediapipe as mp 
from math import hypot 
import screen_brightness_control as sbc 
import numpy as np 

# Initializing the Model 
mpHands = mp.solutions.hands 
hands = mpHands.Hands( 
    static_image_mode=False, 
    model_complexity=1, 
    min_detection_confidence=0.75, 
    min_tracking_confidence=0.75, 
    max_num_hands=2) 

Draw = mp.solutions.drawing_utils 

# Start capturing video from webcam 
cap = cv2.VideoCapture(0) 

while True: 
    # Read video frame by frame 
    _, frame = cap.read() 

    # Flip image 
    frame = cv2.flip(frame, 1) 

    # Convert BGR image to RGB image 
    frameRGB = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) 

    # Process the RGB image 
    Process = hands.process(frameRGB) 

    landmarkList = [] 
    # if hands are present in image(frame) 
    if Process.multi_hand_landmarks: 
        # detect handmarks 
        for handlm in Process.multi_hand_landmarks: 
            for _id, landmarks in enumerate(handlm.landmark): 
                # store height and width of image 
                height, width, color_channels = frame.shape 

                # calculate and append x, y coordinates 
                # of handmarks from image(frame) to lmList 
                x, y = int(landmarks.x*width), int(landmarks.y*height) 
                landmarkList.append([_id, x, y]) 

            # draw Landmarks 
            Draw.draw_landmarks(frame, handlm, 
                                mpHands.HAND_CONNECTIONS) 

    # If landmarks list is not empty 
    if landmarkList != []: 
        # store x,y coordinates of (tip of) thumb 
        x_1, y_1 = landmarkList[4][1], landmarkList[4][2] 

        # store x,y coordinates of (tip of) index finger 
        x_2, y_2 = landmarkList[8][1], landmarkList[8][2] 

        # draw circle on thumb and index finger tip 
        cv2.circle(frame, (x_1, y_1), 7, (0, 255, 0), cv2.FILLED) 
        cv2.circle(frame, (x_2, y_2), 7, (0, 255, 0), cv2.FILLED) 

        # draw line from tip of thumb to tip of index finger 
        cv2.line(frame, (x_1, y_1), (x_2, y_2), (0, 255, 0), 3) 

        # calculate square root of the sum of 
        # squares of the specified arguments. 
        L = hypot(x_2-x_1, y_2-y_1) 

        # 1-D linear interpolant to a function 
        # with given discrete data points 
        # (Hand range 15 - 220, Brightness 
        # range 0 - 100), evaluated at length. 
        b_level = np.interp(L, [15, 220], [0, 100]) 

        # set brightness 
        sbc.set_brightness(int(b_level)) 

    # Display Video and when 'q' is entered, destroy 
    # the window 
    cv2.imshow('Image', frame) 
    if cv2.waitKey(1) & 0xff == ord('q'): 
        break

我收到此错误:

ImportError: DLL load failed while importing _framework_bindings: A dynamic link library (DLL) initialization routine failed.                                                    

我尝试运行该程序,我也尝试了这一切:

Check Python Version: Make sure you are using a compatible version of Python. Mediapipe generally works well with Python 3.7 to 3.10.

重新安装 Mediapipe:

First, uninstall the existing installation:
bash
pip uninstall mediapipe
Then, reinstall it:
bash
pip install mediapipe
Check for Other Dependencies: Ensure that all dependencies required by Mediapipe are installed. You can do this by upgrading pip and reinstalling:

bash
pip install --upgrade pip
pip install mediapipe
Check for Compatibility Issues: Sometimes, specific versions of libraries can cause compatibility issues. You can try installing a specific version of Mediapipe:

bash
pip install mediapipe==0.8.10  # replace with the version you want to try
Check for Missing DLLs: If you're on Windows, it's possible that some required DLLs are missing. Make sure your system is updated and that you have the latest Visual C++ Redistributable installed, as it can sometimes resolve DLL issues.

Run as Administrator: Sometimes, running your terminal or IDE as an administrator can resolve permission-related issues that might prevent DLLs from loading.

Create a Virtual Environment: If the problem persists, consider creating a new virtual environment and installing your dependencies there. This can help isolate the issue:

bash
python -m venv myenv
myenv\Scripts\activate  # On Windows
or
source myenv/bin/activate  # On macOS/Linux
pip install mediapipe opencv-python numpy screen-brightness-control pycaw
Check for Other Software Conflicts: Sometimes, other software installed on your computer can interfere with the execution of Python scripts. Try closing other applications and running your script again.

但我仍然遇到同样的错误:

ImportError: DLL load failed while importing _framework_bindings: A dynamic link library (DLL) initialization routine failed.                                                
python
1个回答
0
投票

您可能需要额外的库。

  • Windows:下载并安装 Microsoft Visual C++ Redistributable:link
  • Linux:安装libgl1 libglib2.0-0:
    sudo apt install libgl1 libglib2.0-0

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.