import cv2 as cv
gst = '''
souphttpsrc location=https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1744910771/ei/U-UAaOOdAsjSqfkP4-iTiAw/ip/117.231.163.135/id/9M02G5c6x6w.3/itag/96/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D137/rqh/1/hls_chunk_host/rr2---sn-cnoa-ug1e.googlevideo.com/xpc/EgVo2aDSNQ%3D%3D/playlist_duration/30/manifest_duration/30/bui/AccgBcMgwBvYCm_AY0lVcJ7XIYNbAnWgKXslhKCNMLvO6TDY5-WqSxTmLagGjaAEfqyG005NeQXrIo2Z/spc/_S3wKgpC-pe5PDFAHndYWAk1bTTEQvA5H6jMavjZ-eNQkct-66wNAgAku4mDQf-eIa2ObWQ/vprv/1/playlist_type/DVR/initcwndbps/1973750/met/1744889173,/mh/6r/mm/44/mn/sn-cnoa-ug1e/ms/lva/mv/m/mvi/2/pl/20/rms/lva,lva/dover/11/pacing/0/keepalive/yes/fexp/51355912/mt/1744888834/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,sgoap,sgovp,rqh,xpc,playlist_duration,manifest_duration,bui,spc,vprv,playlist_type/sig/AJfQdSswRQIhAMT6ivQyuA80BRaK2-0o_GxEQM0VdS0XSIQ4bSVj5iKmAiAMG7Oa_IsUDJHV0rLY_0zvV1809xsbFsGnaS1po-oW_g%3D%3D/lsparams/hls_chunk_host,initcwndbps,met,mh,mm,mn,ms,mv,mvi,pl,rms/lsig/ACuhMU0wRQIgKnsDnRYeGzCFevAeKRfUn1zAmNIm6opDW6LXWtXj49UCIQDkab_n8NjsvBz1rWoGFa6LXmci8Jz9GRMcBZ_c3T81_A%3D%3D/playlist/index.m3u8
! hlsdemux
! queue
! decodebin
! videoconvert
! videoscale
! appsink
'''
# Load Haar cascade
face_cascade = cv.CascadeClassifier("/home/cnc/You/build/opencv/data/haarcascades/haarcascade_frontalface_default.xml")
# Open video stream
video = cv.VideoCapture(gst, cv.CAP_GSTREAMER)
if not video.isOpened():
print("error on video initialization")
exit()
frame_count = 0
while True:
ret, frame = video.read()
if not ret:
break
# Resize frame for faster processing
frame = cv.resize(frame, (640, 360))
# Only process every second frame
frame_count += 1
if frame_count % 2 != 0:
continue
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
for (x, y, w, h) in faces:
cv.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv.imshow("Face Recognition", frame)
if cv.waitKey(1) & 0xFF == ord('q'):
break
video.release()
cv.destroyAllWindows()