Trí tuệ nhân tạo & STEAM

Khám phá Thị giác máy tính (Computer Vision) – Dự án: Nhận diện tư thế người với Camera và Raspberry Pi

Thị giác máy tính không phải là phép thuật, đó là cách chúng ta dạy máy tính "nhìn" và hiểu thế giới thực. Để bắt đầu, không gì tuyệt vời hơn việc tự tay xây dựng một Hệ thống nhận diện tư thế người (Pose Estimation) thời gian thực. Dự án này kết hợp giữa phần cứng nhỏ gọn và sức mạnh của các thư viện AI mã nguồn mở.

Học sinh lập trình Python

1. Chuẩn bị công cụ (Yêu cầu hệ thống)

  • Phần cứng: 1 bo mạch Raspberry Pi (khuyến nghị Pi 4 trở lên), 1 Camera module (hoặc Webcam USB).
  • Phần mềm (Môi trường):
    • Hệ điều hành Raspberry Pi OS.
    • Ngôn ngữ: Python 3.13 (đảm bảo môi trường tối ưu và mới nhất).
    • Thư viện cốt lõi: OpenCV (Xử lý hình ảnh) và MediaPipe (Mô hình AI nhận diện của Google).

2. Cài đặt môi trường

Mở Terminal trên Raspberry Pi và thiết lập môi trường ảo, sau đó cài đặt các thư viện cần thiết:

Bash

# Tạo môi trường ảo với Python 3.13
python3.13 -m venv pose_env
source pose_env/bin/activate

# Cài đặt OpenCV và MediaPipe
pip install opencv-python mediapipe

3. Viết mã nguồn (Code thực chiến)

Tạo một file có tên pose_detect.py. Đoạn code dưới đây được tối ưu hóa độ dài để học sinh dễ dàng đọc hiểu luồng logic:

Python

import cv2
import mediapipe as mp

# Khởi tạo mô hình nhận diện tư thế từ MediaPipe
mp_pose = mp.solutions.pose
pose = mp_pose.Pose()
mp_draw = mp.solutions.drawing_utils

# Bật Camera (số 0 thường là camera mặc định)
cap = cv2.VideoCapture(0)

while True:
success, img = cap.read()
if not success:
break

# Chuyển đổi hệ màu từ BGR (OpenCV) sang RGB (MediaPipe)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Đưa hình ảnh vào mô hình AI để xử lý
results = pose.process(img_rgb)

# Nếu phát hiện ra người, tiến hành vẽ các điểm khớp xương (Landmarks)
if results.pose_landmarks:
mp_draw.draw_landmarks(img, results.pose_landmarks, mp_pose.POSE_CONNECTIONS)

# Hiển thị cửa sổ kết quả
cv2.imshow("Nhan dien tu the - CodeSpace", img)

# Bấm phím 'q' để thoát
if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()

Hình ảnh màn hình hiển thị một người đang đứng trước camera, trên cơ thể có các điểm ảnh đỏ (landmarks) tại các khớp nối (vai, khuỷu tay, đầu gối) và được nối với nhau bằng các đường thẳng màu xanh lá cây, đặc trưng của thư viện MediaPipe. Góc phải là thiết bị Raspberry Pi đang kết nối với webcam.


4. Chạy thử nghiệm và phân tích

Chạy lệnh python pose_detect.py. Camera sẽ bật lên và bạn sẽ thấy các điểm ảnh (điểm neo) được kết nối với nhau bằng các đường thẳng trên cơ thể mình.

  • Học sinh học được gì? Các em sẽ hiểu cách vòng lặp while hoạt động liên tục để bắt từng khung hình (frame), cách máy tính quy đổi màu sắc, và cách AI "đánh dấu" tọa độ (X, Y, Z) của các khớp xương trên cơ thể. Từ nền tảng này, các em có thể phát triển thêm các dự án đếm số lần hít đất, cảnh báo ngồi sai tư thế, hoặc điều khiển robot bằng cử chỉ tay.

Cho con trải nghiệm một buổi học thật

Đăng ký học thử miễn phí — CodeSpace sẽ tư vấn lộ trình phù hợp với bé.

Đăng ký học thử miễn phí