İş 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).
Durum: …
Örnek sahne: endüstriyel mutfak tezgâhı, sıcak ocak ve sentetik bir el. Elin noktaları sahne üreticisinden gelir.
Nasıl çalışıyor?
- Nokta bulma: MediaPipe el modeli her el için 21 nokta verir (bilek, parmak eklemleri ve uçları).
- Ö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.
- Kural: uzaklık 0 → TEHLİKE; uzaklık < uyarı mesafesi (varsayılan 40 px) → UYARI; değilse güvenli.
- 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)
import cv2, math, mediapipe as mphands = mp.solutions.hands.Hands(max_num_hands=2)ZONE = (380, 200, 200, 140) # x, y, genişlik, yükseklikMARGIN = 40 # pikselcap = cv2.VideoCapture(0)def dist_to_rect(px, py, r):x, y, w, h = rdx = max(x - px, 0, px - (x + w)); dy = max(y - py, 0, py - (y + h))return math.hypot(dx, dy) # içerideyse 0while cap.isOpened():ok, frame = cap.read()if not ok: breakh, w = frame.shape[:2]res = hands.process(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))d = float("inf")for hand in res.multi_hand_landmarks or []:d = min([d] + [dist_to_rect(p.x * w, p.y * h, ZONE) for p in hand.landmark])level = "TEHLİKE" if d == 0 else "UYARI" if d < MARGIN else "güvenli" # DANGER / WARNING / safecolor = (0, 0, 255) if d == 0 else (0, 200, 255) if d < MARGIN else (0, 200, 0)x, y, zw, zh = ZONEcv2.rectangle(frame, (x, y), (x + zw, y + zh), color, 3)cv2.putText(frame, level, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, color, 2)cv2.imshow("hot zone", frame)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.
