วิธีการลบพื้นหลังออกจากภาพจากกล้องเว็บเคมโดยใช้ Python

การลบพื้นหลังออกจากภาพจากกล้องเว็บแคมโดยใช้ Python สามารถทำได้โดยใช้ไลบรารี OpenCV และ Mediapipe ซึ่งเป็นเครื่องมือที่ช่วยในการตรวจจับและแยกวัตถุในภาพได้อย่างแม่นยำ เช่น ตัวคนในภาพ

ขั้นตอนการทำ:

1. ติดตั้งไลบรารีที่จำเป็น

ติดตั้ง OpenCV และ Mediapipe โดยใช้คำสั่งด้านล่าง:

pip install opencv-python mediapipe

2.เขียนโค้ดสำหรับลบพื้นหลัง

ใช้ Mediapipe เพื่อตรวจจับคนในภาพและลบพื้นหลังออก:

import cv2
import mediapipe as mp
import numpy as np

# เตรียมโมเดล Mediapipe Selfie Segmentation
mp_selfie_segmentation = mp.solutions.selfie_segmentation
segmenter = mp_selfie_segmentation.SelfieSegmentation(model_selection=1)

# เปิดกล้องเว็บแคม
cap = cv2.VideoCapture(0)

# สีพื้นหลัง (สามารถปรับเป็นสีใดก็ได้)
BACKGROUND_COLOR = (0, 255, 0)  # สีเขียว

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("ไม่สามารถอ่านภาพจากกล้องได้")
        break

    # แปลงสีภาพจาก BGR เป็น RGB
    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    # ประมวลผลภาพเพื่อแยกพื้นหลัง
    results = segmenter.process(rgb_frame)

    # สร้างแมสก์สำหรับพื้นที่ที่ต้องการเก็บไว้
    mask = results.segmentation_mask > 0.5

    # ลบพื้นหลังโดยแทนด้วยสีที่กำหนด
    background = np.zeros_like(frame, dtype=np.uint8)
    background[:] = BACKGROUND_COLOR
    output_frame = np.where(mask[..., None], frame, background)

    # แสดงผลภาพ
    cv2.imshow('Webcam - Background Removed', output_frame)

    # กด 'q' เพื่อปิดโปรแกรม
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# ปิดการทำงาน
cap.release()
cv2.destroyAllWindows()

3.การปรับแต่ง

  • สามารถเปลี่ยนสีพื้นหลัง (BACKGROUND_COLOR) หรือใส่ภาพอื่นแทนพื้นหลังได้โดยการโหลดภาพใหม่และใส่แทนที่ background
  • หากต้องการปรับความแม่นยำของการแยกพื้นหลัง สามารถใช้โมเดล Mediapipe Model Selection (เช่น model_selection=1 สำหรับฉากทั่วไป และ model_selection=0 สำหรับฉากใกล้ชิด)

ตัวเลือกเพิ่มเติม:

หากต้องการเพิ่มคุณภาพการลบพื้นหลังให้สมจริงยิ่งขึ้น อาจใช้ไลบรารี AI เช่น rembg หรือ Deeplab ที่สามารถประมวลผลภาพที่ซับซ้อนยิ่งขึ้นได้!

ผลลัพธ์

Share

admin

ประวัติการศึกษา ระดับปริญญาตรี : วิศวกรรมโทรคมนาคม คณะวิศวกรรมศาสตร์ พระจอมเกล้าเจ้าคุณทหารลาดกระบัง ระดับปริญญาโท : วิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยสงขลานครินท์ หาดใหญ่

You may also like...

Leave a Reply