Cấu trúc khóa học

THIẾT KẾ KHÓA HỌC: "NHẬP MÔN THỊ GIÁC MÁY TÍNH VỚI PYTHON" (12 BUỔI)

Khóa học được thiết kế theo lộ trình thực chiến: mỗi buổi học đều đi liền với một miniproject cụ thể, tận dụng tư duy OOP và Socket đã có.

MODULE 1: NỀN TẢNG XỬ LÝ ẢNH & OPENCV (Buổi 1 – 4)

  • Buổi 1: Thế giới điểm ảnh (Pixel) & Luồng Video

    • Khái niệm ảnh số: Ma trận 2D/3D, hệ màu RGB và BGR, kích thước, kênh màu (channels).

    • Đọc ảnh, lưu ảnh, mở luồng Webcam bằng cv2.VideoCapture().

    • Dự án nhỏ: Tạo ứng dụng chụp ảnh bằng phím bấm và lưu vào thư mục có đóng dấu thời gian.

  • Buổi 2: Biến đổi không gian màu & Lọc màu (Color Filtering)

    • Chuyển đổi BGR sang HSV (vì sao HSV tốt hơn RGB khi lọc màu).

    • Tạo thanh trượt (Trackbar) để dò dải màu cv2.inRange().

    • Dự án nhỏ: Chương trình phát hiện và vẽ vòng tròn theo dõi một quả bóng/nắp chai màu cam/xanh.

  • Buổi 3: Xử lý hình thái học & Biên cạnh (Contours & Edges)

    • Bộ lọc Gaussian Blur, phát hiện biên Canny.

    • Tìm đường bao vật thể (cv2.findContours), tính chu vi, diện tích và tọa độ tâm bounding box.

    • Dự án nhỏ: Đếm số lượng đồng xu hoặc hình học đặt trên mặt bàn trắng.

  • Buổi 4: Đóng gói thành lớp đối tượng (Ứng dụng OOP)

    • Xây dựng Class VideoProcessor quản lý luồng camera và Class ColorTracker kế thừa từ bộ xử lý ảnh.

    • Tối ưu hóa FPS và xử lý ngoại lệ (Exception Handling).

MODULE 2: AI THỜI THỰC VỚI MEDIAPIPE (Buổi 5 – 8)

  • Buổi 5: Bắt dấu vân tay & Bàn tay (Hand Tracking)

    • Cài đặt và sử dụng mediapipe.solutions.hands.

    • Giải mã 21 điểm mốc (landmarks) trên bàn tay, tọa độ $(x, y, z)$.

    • Dự án nhỏ: Chương trình nhận diện và đếm số ngón tay đang giơ lên (Finger Counter).

  • Buổi 6: Điều khiển cử chỉ (Gesture Control)

    • Tính khoảng cách Euclidean giữa hai điểm (ví dụ: đầu ngón trỏ và ngón cái).

    • Phát hiện cử chỉ "Búng tay", "Chạm ngón", "Nắm đấm".

    • Dự án nhỏ: "Bảng vẽ ma thuật trên không" (Virtual Painter) – giơ ngón trỏ để vẽ nét, giơ 2 ngón để chọn màu/xóa.

  • Buổi 7: Bắt khuôn mặt & Nhận diện hướng nhìn (Face Mesh & Pose)

    • Nhận diện 468 điểm trên khuôn mặt (FaceMesh).

    • Phát hiện nháy mắt (Eye Blink Detection) bằng tỷ lệ khung mắt (EAR).

    • Dự án nhỏ: Ứng dụng cảnh báo buồn ngủ (Sleepiness Alert) – phát âm thanh nếu nhắm mắt quá 2 giây.

  • Buổi 8: Mini-Game tương tác người - máy

    • Xây dựng game đơn giản (như Flappy Bird hoặc Chém hoa quả) điều khiển bằng cử chỉ tay hoặc nghiêng đầu.

MODULE 3: KẾT HỢP SOCKET & HỆ THỐNG PHÂN TÁN (Buổi 9 – 12)

  • Buổi 9: Stream video thời gian thực qua Socket

    • Nén khung hình OpenCV sang JPEG bằng cv2.imencode.

    • Dùng giao thức UDP/TCP Socket để truyền luồng video từ Client (máy có camera) sang Server (máy nhận hiển thị).

  • Buổi 10: Xây dựng hệ thống Client - Edge Controller

    • Máy tính xử lý CV chỉ gửi gói tin JSON chứa tọa độ {"hand_x": 120, "hand_y": 340, "pinch": True} qua Socket.

    • Bên nhận đọc gói tin và điều khiển chuột máy tính (pyautogui) hoặc gửi ra bo mạch Arduino/ESP32.

  • Buổi 11: Làm quen với Mô hình Nhận diện đồ vật (YOLOv8)

    • Sử dụng thư viện ultralytics chạy mô hình YOLOv8n nhẹ (Nano).

    • Phân loại đồ vật: người, cốc nước, điện thoại, sách, v.v.

  • Buổi 12: Đồ án tốt nghiệp (Capstone Project)

    • Tùy chọn 1: Hệ thống nhà thông minh mini (Bật/tắt đèn hoặc ứng dụng bằng cử chỉ tay qua Socket).

    • Tùy chọn 2: Camera an ninh thông minh (Nhận diện có người bước vào khung hình $\rightarrow$ tự động chụp ảnh gửi tin nhắn cảnh báo).