Okullar için Robotik ve Mühendislik · anaokulundan liseye

İş güvenliği · El noktaları (Hands)

🔥 İş güvenliği: el yasak bölgede

Pres, testere, sıcak ocak: el tehlikeli alana yaklaşınca uyar.

Fabrikalarda pres ve kesme makinelerinde, endüstriyel mutfaklarda ocak başında kullanılan "el koruma" kameraları: el, tehlikeli bölgeye belli bir mesafeden fazla yaklaşırsa önce sarı uyarı, içine girerse kırmızı alarm (gerçek sistemde makine durdurulur).

Görüntüye tıkla: bölge oraya taşınır.

Durum: …

Eşikler

Örnek sahne: endüstriyel mutfak tezgâhı, sıcak ocak ve sentetik bir el. Elin noktaları sahne üreticisinden gelir.

Nasıl çalışıyor?

  1. Nokta bulma: MediaPipe el modeli her el için 21 nokta verir (bilek, parmak eklemleri ve uçları).
  2. Özellik: her noktanın tehlike dikdörtgenine uzaklığı; dışarıdaysa en yakın kenara olan mesafe, içerideyse 0. En küçüğü alınır.
  3. Kural: uzaklık 0 → TEHLİKE; uzaklık < uyarı mesafesi (varsayılan 40 px) → UYARI; değilse güvenli.
  4. Kararlılık: seviye yükselirken 2 kare yeter (alarm erken çalsın), düşerken 6 kare beklenir (hemen susmasın).

Kendin dene

Görüntüde bir yere tıkla: sıcak bölge oraya taşınır. Uyarı mesafesini 0 yap (yalnız içeri girince alarm) ve 120 yap: hangisi bir pres makinesi için daha doğru olurdu? Kamera modunda elini bölgeye yavaşça yaklaştır.

Python karşılığı (OpenCV / MediaPipe)

sicak_bolge.py
  1. import cv2, math, mediapipe as mp
  2. hands = mp.solutions.hands.Hands(max_num_hands=2)
  3. ZONE = (380, 200, 200, 140) # x, y, genişlik, yükseklik
  4. MARGIN = 40 # piksel
  5. cap = cv2.VideoCapture(0)
  6. def dist_to_rect(px, py, r):
  7. x, y, w, h = r
  8. dx = max(x - px, 0, px - (x + w)); dy = max(y - py, 0, py - (y + h))
  9. return math.hypot(dx, dy) # içerideyse 0
  10. while cap.isOpened():
  11. ok, frame = cap.read()
  12. if not ok: break
  13. h, w = frame.shape[:2]
  14. res = hands.process(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
  15. d = float("inf")
  16. for hand in res.multi_hand_landmarks or []:
  17. d = min([d] + [dist_to_rect(p.x * w, p.y * h, ZONE) for p in hand.landmark])
  18. level = "TEHLİKE" if d == 0 else "UYARI" if d < MARGIN else "güvenli" # DANGER / WARNING / safe
  19. color = (0, 0, 255) if d == 0 else (0, 200, 255) if d < MARGIN else (0, 200, 0)
  20. x, y, zw, zh = ZONE
  21. cv2.rectangle(frame, (x, y), (x + zw, y + zh), color, 3)
  22. cv2.putText(frame, level, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, color, 2)
  23. cv2.imshow("hot zone", frame)
  24. if cv2.waitKey(1) == 27: break

🔒 Kamera görüntüsü yalnız bu cihazda işlenir; hiçbir yere gönderilmez ve kaydedilmez. Sekmeden ya da sayfadan çıkınca kamera kapanır.

Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • Drone dersiBüyükler için: parça, simülasyon, yazılım; 10 üniteSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç