【开源】ESP32-cam+python 实现人脸识别(opencv)

import CV2
import numpy as np
import mediapipe as mp
import time
pTime = 0
cap = CV2.VideoCapture("http://192.168.31.89:81/stream")
mpFaceDetection = mp.solutions.face_detection
mpDraw = mp.solutions.drawing_utils
faceDetection = mpFaceDetection.FaceDetection(0.75)
def fancyDraw(img,bbox,l=30,t=5,rt=1):
x,y,w,h=bbox
x1,y1=x+w,y+h
CV2.rectangle(img,bbox,(255,0,255),rt)
#Top Left x,y
CV2.line(img,(x,y),(x+1,y),(255,0,255),t)
CV2.line(img,(x,y),(x,y+1),(255,0,255),t)
# Top Right x1,y
CV2.line(img,(x1,y),(x1-1,y),(255,0,255),t)
CV2.line(img,(x1,y),(x1,y+1),(255,0,255),t)
# Bottom Left x,y1
CV2.line(img,(x,y1),(x+1,y1),(255,0,255),t)
CV2.line(img,(x,y1),(x,y1-1),(255,0,255),t)
# Bottom Right x1,y1
CV2.line(img,(x1,y1),(x1-1,y1),(255,0,255),t)
CV2.line(img,(x1,y1),(x1,y1-1),(255,0,255),t)
return img
while True:
success,img=cap.read()
imgRGB =CV2.cvtColor(img,CV2.COLOR_BGR2RGB)
results = faceDetection.process(imgRGB)
if results.detections:
for id , detection in enumerate(results.detettions):
# mpDraw.draw_detection(img,detection)
# print(id,detection)
bboxC = detection.location_data.relative_bounding_box
ih,iw,ic = img.shape
bbox=int(bboxC.xmin*iw),int(bboxC.ymin* ih),int(bboxC.width * iw),int(bboxC.height* ih)
# print(bbox)
# CV2.rectangle(img,bbox,(255,0,255),2)
img=fancyDraw(img,bbox,l=10)
CV2.putText(img, f'{int(detection.score[0]* 100)}%', (bbox[0], bbox[1] - 20), CV2.FONT_HERSHEY_PLAIN, 3, (255, 0,255),2)
cTime = time.time()
fps=1/(cTime-pTime)
pTime = cTime
CV2.putText(img,f'FPS: {int(fps)}',(20,70),CV2.FONT_HERSHEY_PLAIN,3,(0,255,0),2)
#旋转90度,旋转几次
img=np.rot90(img,k=3)
CV2.imshow("img",img)
CV2.waitkey(1)