当我运行这个程序时:
# 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.
您可能需要额外的库。
sudo apt install libgl1 libglib2.0-0
我希望这有帮助。