By the end of this page you’ll have MediaPipe 1.0.1 installed, a Pose Landmarker .task model on disk, and a one-shot script that prints 33 body landmarks. That’s a working pose estimation AI stack on your machine – not a slide deck.
Ship Tasks Pose Landmarker, not leftover tutorial code. Normalized image coords plus world coords in meters; the stack sits on BlazePose research (arXiv:2006.10204). Legacy mp.solutions.pose still clogs search results, yet Legacy Solutions support ended March 1, 2023 (Solutions guide). Use the Tasks API.
System requirements for pose estimation AI
Official Python setup guide baseline (pin your expectations to MediaPipe 1.0.1 as of Aug 2026):
- OS: Windows, macOS, or Linux desktop; Raspberry OS 64-bit for IoT
- Python: 3.9 or later
- pip: 20.3+
- Arch: a published 1.0.1 wheel – manylinux_2_28 x86_64/aarch64, macOS 11+ arm64, Windows amd64/arm64 per PyPI files. 32-bit and musl/alpine images usually get
No matching distribution
Grab opencv-python (or headless) when you feed webcam or video frames. MediaPipe does not own capture.
How much machine is “enough”? Docs never publish a neat RAM sticker. Lite + a still image is light; masks, multi-pose, or a busy LIVE_STREAM loop are where laptops start swapping. If you’re unsure, start lite, masks off, num_poses=1.
Official download sources
1.0.1 landed on PyPI Aug 14, 2026 – install from pypi.org/project/mediapipe, not a random wheel mirror.
Repo and tags: github.com/google-ai-edge/mediapipe (v1.0.0 tag Jul 28, 2026). Pose Landmarker overview lives under developers.google.com/edge/mediapipe.
Model bundles are separate. The pip wheel does not ship .task files – you download lite/full/heavy yourself:
# lite - fastest default for laptops
wget -O pose_landmarker_lite.task
https://storage.googleapis.com/mediapipe-models/pose_landmarker/pose_landmarker_lite/float16/1/pose_landmarker_lite.task
# full
# .../pose_landmarker_full/float16/1/pose_landmarker_full.task
# heavy - highest quality, slowest
# .../pose_landmarker_heavy/float16/1/pose_landmarker_heavy.task
PowerShell: Invoke-WebRequest -OutFile pose_landmarker_lite.task -Uri <url>.
Install MediaPipe 1.0.1 step by step
Venv first. Keeps system Python boring and recoverable.
python3 -m venv .venv-mp
# Windows: py -3.12 -m venv .venv-mp
source .venv-mp/bin/activate # Windows: .venv-mpScriptsactivate
python -m pip install --upgrade pip
python -m pip install mediapipe==1.0.1 opencv-python
Confirm the pin:
python -c "import mediapipe as mp; print(mp.__version__)"
# expect 1.0.1
First-time configuration (minimum viable)
Put the lite model beside the script (absolute path in services):
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
model_path = "pose_landmarker_lite.task"
base_options = python.BaseOptions(model_asset_path=model_path)
options = vision.PoseLandmarkerOptions(
base_options=base_options,
running_mode=vision.RunningMode.IMAGE,
num_poses=1,
min_pose_detection_confidence=0.5,
min_pose_presence_confidence=0.5,
min_tracking_confidence=0.5,
output_segmentation_masks=False,
)
landmarker = vision.PoseLandmarker.create_from_options(options)
image = mp.Image.create_from_file("person.jpg") # RGB still
result = landmarker.detect(image)
if result.pose_landmarks:
print(len(result.pose_landmarks[0]), "landmarks") # 33
nose = result.pose_landmarks[0][0]
print(nose.x, nose.y, nose.z, nose.visibility)
landmarker.close()
Those defaults match the Python Pose Landmarker guide. Masks on only when you need the person mask – memory and latency jump fast.
Webcam loops: RunningMode.VIDEO or LIVE_STREAM with monotonically increasing frame_timestamp_ms. IMAGE-on-a-stream “works,” then feels like slow motion because tracking assumptions never engage.
Verify the install works
python -c "import mediapipe as mp; print(mp.__version__)"→1.0.1python -c "from mediapipe.tasks.python import vision; print(vision.PoseLandmarker)"→ class prints, no ImportError- Run the snippet on a full-body photo → 33 landmarks, nose
visibilityusually high - Optional: mediapipe-samples Colab if you want a browser check before fighting local cameras
Step 2 fails while step 1 works? Wrong venv or a half-install. Delete the env and recreate – don’t chase path hacks first.
Ever notice how “it installed” and “it runs on my camera at 30 FPS” are two different projects? The gap is almost always the model file path or the running mode, not the pip line.
Common install errors and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
No matching distribution found for mediapipe |
Unsupported platform/arch or pip tied to wrong Python | 64-bit CPython 3.9+; python -m pip inside the venv; skip alpine/32-bit unless you build wheels |
ImportError: DLL load failed (Windows) |
Missing VC++ runtime | Install current Microsoft Visual C++ Redistributable (x64), retry import |
model_asset_path / file not found at create_from_options |
.task missing or relative path wrong |
wget lite/full/heavy; pass an absolute path |
| Video path “slow-mo” or empty results | Wrong mode or bad timestamps | VIDEO + real ms timestamps; LIVE_STREAM needs result_callback; don’t queue detect calls while busy |
First call after create can sit a beat while the bundle maps. Long Linux loops that never close() the landmarker? Memory creeps. Idle → close. Masks off unless required.
Upgrade, migrate, uninstall
Upgrade:
python -m pip install -U mediapipe==1.0.1
Still on mp.solutions.pose? Rewrite to PoseLandmarker + a .task file. model_complexity is gone – you pick lite/full/heavy on disk; confidence knobs were renamed.
Uninstall / cleanup:
python -m pip uninstall -y mediapipe opencv-python
deactivate
rm -rf .venv-mp
rm -f pose_landmarker_*.task
PyInstaller: --add-data for the .task plus --collect-all mediapipe (: on Unix, ; on Windows). Model files are not auto-discovered – the Python setup Packaging notes call this out for a reason.
FAQ
Which model should I download first?
pose_landmarker_lite.task. Full or heavy only after lite quality fails on your hardware.
Do I need GPU drivers for MediaPipe Pose on desktop Python?
Not for a first deploy. Get IMAGE mode printing 33 points on CPU first. If a later build exposes a GPU delegate on your OS, measure end-to-end FPS (capture + infer + draw) – don’t assume drivers alone fix a slow loop.
Is mp.solutions.pose still OK in 2026?
Old notebooks may still import it. That API surface is legacy end-of-support territory. New code should call Tasks Vision PoseLandmarker with an explicit .task bundle so you stay on the maintained options and model cards. Migrating is mostly: download a bundle, map confidences, and pick IMAGE vs VIDEO vs LIVE_STREAM on purpose.
Next action: create the venv, pip install mediapipe==1.0.1, wget the lite .task, run the IMAGE-mode snippet on one photo. When 33 landmarks print, wire OpenCV capture with VIDEO mode – you’re deployed.