免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

MediaPipe Python 快速上手指南:实时视觉环境 3 类常见报错的完整修复方案

MediaPipe Python 快速上手指南:实时视觉环境 3 类常见报错的完整修复方案 MediaPipe Python 快速上手指南:实时视觉环境 3 类常见报错的完整修复方案【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe上周帮同事排线上问题,终端里弹出一行红字:ImportError: cannot import name Sequence from collections。他把项目 Python 升到 3.12 之后,MediaPipe 直接起不来,整条人脸检测流水线全停了。如果你也用 MediaPipe 这个跨平台实时视觉框架(做手势识别、人脸关键点、姿态估计那一类活),下面这几种翻车场面大概率都见过:导入就崩、依赖互相打架、换了台机器就装不上。这篇文章不聊原理,只帮你把环境配到能跑为止。一、先搞清楚:问题到底出在哪别急着重装,先花两分钟判断你踩的是哪一个坑。MediaPipe 的环境问题基本集中在三处:坑 1:Python 版本和官方支持范围没对上典型报错就是开头那句cannot import name Sequence或者一堆ModuleNotFoundError。为什么会这样:官方 wheel 目前覆盖的是 Python 3.9 ~ 3.12(可以翻 setup.py 里的 classifiers 确认),这个范围之外的版本没有现成安装包,自然装不上或装上就崩。另外 Python 3.10 把collections里的一批抽象类型挪进了collections.abc,老代码里的导入写法在新版本上就会直接报错。坑 2:依赖版本互相打架pip install mediapipe成功,一import就炸,错误指向 numpy、opencv 或 protobuf。为什么会这样:看 requirements.txt 就知道,官方对 numpy、opencv-contrib-python 这些只声明了包名没锁死版本,而你自己项目里可能还有 TensorFlow、OpenCV 头文件之类的大户。大家各自拉了一个不兼容的版本,pip 不会主动拦你。坑 3:这台机器压根没有现成的轮子在 Jetson 或树莓派(aarch64 架构)上pip install mediapipe转圈半天,最后报找不到匹配的 wheel。为什么会这样:PyPI 上官方没提供 aarch64 的预编译包,这类 ARM 设备只能从源码构建,而源码构建又要求你机器上有 Bazel 和 OpenCV 开发库,门槛一下子高了一截。参考 Python 安装文档里对 aarch64 的说明。二、对号入座:按你的情况选一条路三条路,你只跟自己那条相关,其他跳过就行。路线 A:x86 机器 Python 3.9~3.12(绝大多数人的情况)最省事,一条命令:pip install mediapipe建议还是套一个虚拟环境,别让 MediaPipe 和你项目的其他依赖混在一锅(官方文档 docs/getting_started/python.md 也是这么做的):python3 -m venv mp_env source mp_env/bin/activate pip install mediapipe路线 B:需要锁版本,或要改源码重新构建适合两种人:一是生产环境要求依赖可复现,二是你 fork 了代码要改。项目为每个 Python 版本准备了 pip-compile 生成的锁定文件:requirements_lock_3_10.txt、requirements_lock_3_11.txt、requirements_lock_3_12.txt,按你的 Python 版本挑一个:git clone --depth 1 https://gitcode.com/GitHub_Trending/med/mediapipe cd mediapipe python3 -m venv mp_env source mp_env/bin/activate pip install -r requirements_lock_3_11.txt # 换成你的版本 python3 setup.py install --link-opencv注意--link-opencv会用你系统里已装的 OpenCV,免去从源码编译 OpenCV 的一小时等待;Bazel 版本要求不低于 3.4,细节看 安装文档。路线 C:边缘版本或 ARM 设备Python 是 3.8 或 3.13:先换解释器,pyenv install 3.11 pyenv local 3.11,别硬扛。Jetson / 树莓派:aarch64 没有 wheel,走路线 B 的源码构建,并且先装好 Bazelisk 和 OpenCV 开发库,这一步没捷径。三、跟着做完就能跑:最小可运行示例装完之后,用下面这段 15 行的脚本验证环境。它会对一张图跑手势检测——正好是 MediaPipe 最典型的用法:确认环境(两条命令都要干净):python --version # 应在 3.9 ~ 3.12 python -c import mediapipe as mp; print(mp.__version__)写最小示例check_mediapipe.py,图片直接用仓库里现成的测试素材:import cv2 import mediapipe as mp hands mp.solutions.hands.Hands(static_image_modeTrue, max_num_hands2) path mediapipe/model_maker/python/vision/gesture_recognizer/testdata/raw_data/rock/1bed937b-7ae4-4070-891c-daf69415da41.jpg rgb cv2.cvtColor(cv2.imread(path), cv2.COLOR_BGR2RGB) result hands.process(rgb) print(检测到, len(result.multi_hand_landmarks), 只手) hands.close()运行:python check_mediapipe.py看到检测到 1 只手就成功了。想继续深入,可以从 hands 方案源码 看static_image_mode、max_num_hands这些参数是干什么的。四、收尾自检:5 条清单确认没踩坑跑完对照打勾,全勾上就可以收工:python --version落在 3.9 ~ 3.12 之间import mediapipe不再抛ImportError/ModuleNotFoundErrorpip check输出 No broken requirements found.,没有 numpy / opencv 版本冲突上面那个最小示例打印出检测到 1 只手用的是独立虚拟环境,没有污染系统全局 Python一句话收个尾:环境隔离好、版本对得上,MediaPipe 基本不会再给你使绊子。后面遇到更具体的问题,先去翻 docs/getting_started/ 下的官方文档,再去看项目的 issue 区,九成情况都有人踩过同样的坑。【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表