Vassa007

face realtime 02

Feb 22nd, 2025 (edited)
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.21 KB | None | 0 0
  1. import cv2
  2. from ultralytics import YOLO
  3. import numpy as np
  4.  
  5. # Muat model YOLO yang telah dilatih
  6. model = YOLO("models/best.pt")  # Ganti dengan path model Anda
  7.  
  8. # Daftar ID personal dari dataset
  9. id_mapping = {}
  10. with open("id_mapping.txt", "r") as f:
  11.     for line in f:
  12.         idpersonal, class_id = line.strip().split()
  13.         id_mapping[class_id] = idpersonal
  14.  
  15. # Fungsi untuk mendeteksi wajah dan mengeluarkan ID Personal atau "Unknown"
  16. def recognize_faces_from_webcam():
  17.     # Mengakses webcam
  18.     cap = cv2.VideoCapture(0)
  19.  
  20.     while True:
  21.         # Baca frame dari webcam
  22.         ret, img = cap.read()
  23.  
  24.         if not ret:
  25.             print("❌ Tidak bisa mendapatkan frame dari webcam.")
  26.             break
  27.  
  28.         # Resize gambar menjadi 640x640 untuk sesuai dengan ukuran input model
  29.         img_resized = cv2.resize(img, (640, 640))
  30.  
  31.         img_rgb = cv2.cvtColor(img_resized, cv2.COLOR_BGR2RGB)  # Konversi ke RGB agar model bekerja dengan benar
  32.  
  33.         # Deteksi wajah menggunakan model YOLO
  34.         results = model(img_rgb)
  35.  
  36.         # Ambil bounding box dan klasifikasi untuk setiap wajah yang terdeteksi
  37.         for result in results:
  38.             if result.boxes:
  39.                 for box in result.boxes:
  40.                     class_id = int(box.cls)  # Ambil class ID dari box
  41.                     confidence = box.conf[0].item()  # Ambil nilai confidence
  42.  
  43.                     # Set threshold confidence
  44.                     confidence_threshold = 0.75
  45.                     if confidence < confidence_threshold:
  46.                         label = "Unknown"
  47.                         color = (0, 0, 255)  # Merah untuk wajah yang tidak dikenali
  48.                         print(f"❌ Unknown: Wajah tidak dikenali. Confidence terlalu rendah ({confidence:.2f})")
  49.                     else:
  50.                         # Jika class_id ada dalam id_mapping, kenali ID Personal
  51.                         if str(class_id) in id_mapping:
  52.                             idpersonal = id_mapping[str(class_id)]
  53.                             label = idpersonal
  54.                             color = (0, 255, 0)  # Hijau untuk wajah yang dikenali
  55.                             print(f"✅ ID Personal Dikenali: {idpersonal}")
  56.                         else:
  57.                             label = "Unknown"
  58.                             color = (0, 0, 255)  # Merah untuk wajah yang tidak dikenali
  59.                             print("❌ Unknown: Wajah tidak dikenali.")
  60.  
  61.                     # Gambar bounding box dan label pada wajah yang terdeteksi
  62.                     x1, y1, x2, y2 = map(int, box.xyxy[0])
  63.                     cv2.rectangle(img, (x1, y1), (x2, y2), color, 2)  # Gambar kotak
  64.                     # Menampilkan label dengan ukuran font lebih kecil
  65.                     cv2.putText(img, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 1)
  66.  
  67.         # Menampilkan gambar dengan OpenCV
  68.         cv2.imshow("Deteksi Wajah - Real-Time", img)
  69.  
  70.         # Tekan 'q' untuk keluar dari loop
  71.         if cv2.waitKey(1) & 0xFF == ord('q'):
  72.             break
  73.  
  74.     # Setelah selesai, lepaskan capture dan tutup jendela
  75.     cap.release()
  76.     cv2.destroyAllWindows()
  77.  
  78. # Jalankan deteksi wajah dari webcam
  79. recognize_faces_from_webcam()
  80.  
Add Comment
Please, Sign In to add comment