Files
2026-03-31 13:28:59 +02:00

34 lines
1.1 KiB
Python

import numpy as np
import cv2
lo=np.array([80, 50, 50])
hi=np.array([100, 255, 255])
def detect_inrange(image, surface):
points=[]
image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
image=cv2.blur(image, (5, 5))
mask=cv2.inRange(image, lo, hi)
mask=cv2.erode(mask, None, iterations=2)
mask=cv2.dilate(mask, None, iterations=2)
elements=cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]
elements=sorted(elements, key=lambda x:cv2.contourArea(x), reverse=True)
for element in elements:
if cv2.contourArea(element)>surface:
((x, y), rayon)=cv2.minEnclosingCircle(element)
points.append(np.array([int(x), int(y)]))
else:
break
return points, mask
def detect_visage(image):
face_cascade=cv2.CascadeClassifier("./haarcascade_frontalface_alt2.xml")
points=[]
gray=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
face=face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=3)
for x, y, w, h in face:
points.append(np.array([int(x+w/2), int(y+h/2)]))
return points, None