You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL环境下使用OpenCV+Mediapipe出现libEGL警告问题求助

WSL环境下MediaPipe结合OpenCV处理视频时出现libEGL依赖错误

环境背景

  • Windows 11 + WSL
  • WSL内创建Anaconda环境,通过该环境启动Jupyter Lab
  • 使用OpenCV加载AVI视频,结合MediaPipe提取手部和姿态关键点

可正常运行的初始化代码

import cv2
import mediapipe as mp
import pandas as pd
import numpy as np
import tensorflow as tf

mp_hands = mp.solutions.hands
mp_pose = mp.solutions.pose
mp_drawing = mp.solutions.drawing_utils

cap = cv2.VideoCapture('/Ready0/MVI_0025_0003.avi')

columns = ['frame', 'hand_landmarks', 'pose_landmarks']
df = pd.DataFrame(columns=columns)

报错代码段

with mp_hands.Hands(max_num_hands=2) as hands, mp_pose.Pose() as pose:
    while True:
        ret, img = cap.read()
        if not ret:
            break

错误信息

libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)

libEGL warning: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)

# 重复警告信息省略

已尝试但无效的操作

网上找到的命令MESA_LOADER_DRIVER_OVERRIDE=i965 ./kiwix-deskop,分别在Windows命令提示符和WSL的Anaconda环境中执行:

  • Windows cmd执行结果:
'MESA_LOADER_DRIVER_OVERRIDE' is not recognized as an internal or external command,
operable program or batch file.
  • WSL环境执行结果:
-bash: ./kiwix-deskop: No such file or directory

解决方案

1. 安装缺失的MESA驱动依赖包

在WSL终端执行以下命令,安装包含swrast_dri.so的库:

sudo apt update
sudo apt install mesa-utils libgl1-mesa-glx libgl1-mesa-dri

2. 验证库是否安装成功

执行命令确认文件存在:

ls /usr/lib/dri/swrast_dri.so

若输出文件路径,则说明安装成功。

3. 正确设置环境变量并启动Jupyter Lab

在WSL中激活你的Anaconda环境后,先设置环境变量强制使用软件渲染,再启动Jupyter Lab:

conda activate your_env_name  # 替换为你的Anaconda环境名
export MESA_LOADER_DRIVER_OVERRIDE=swrast
jupyter lab

4. 强制MediaPipe使用CPU运行(可选)

如果上述方法仍有问题,可以在初始化MediaPipe的Hands和Pose时指定使用CPU,避免尝试GPU加速:

with mp_hands.Hands(max_num_hands=2, device='cpu') as hands, mp_pose.Pose(device='cpu') as pose:
    while True:
        ret, img = cap.read()
        if not ret:
            break
        # 后续处理逻辑

内容的提问来源于stack exchange,提问作者Shahrad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 02:59:57