Owleye / codes /show.py
owleyetracker's picture
Upload 45 files
b4c5d36 verified
"""This module is for seeing the camera stream. This module includes Camera class."""
import cv2
import time
from codes.base import eyeing as ey
from screeninfo import get_monitors
monitors = get_monitors()
class Camera(object):
running = True
def raw(self, camera_id):
"""
See camera stream
Parameters:
camera_id: Camera ID
Returns:
None
"""
frame_size, _, _, _ = ey.get_camera_properties(camera_id)
cap = ey.get_camera(camera_id, frame_size)
ey.pass_frames(cap, 100)
i = 0.0
win_name = "Webcam"
if len(monitors) == 1:
x_disp = 0
else:
x_disp = monitors[0].width
ey.big_win(win_name, x_disp)
t0 = time.perf_counter()
print("Showing camera..")
while self.running:
frame_success, frame, _ = ey.get_frame(cap)
if frame_success:
i += 1
cv2.imshow(win_name, frame)
q = cv2.waitKey(1)
if q == ord('q') or q == ord('Q'):
break
cv2.destroyAllWindows()
fps = ey.get_time(i, t0, True)
print(f"FPS : {fps}")
def features(self, camera_id):
"""
See camera stream with landmarks and features
Parameters:
camera_id: Camera ID
Returns:
None
"""
some_landmarks_ids = ey.get_some_landmarks_ids()
(
frame_size,
camera_matrix,
dst_cof,
pcf
) = ey.get_camera_properties(camera_id)
face_mesh = ey.get_mesh()
cap = ey.get_camera(camera_id, frame_size)
ey.pass_frames(cap, 100)
win_name = "Features"
if len(monitors) == 1:
x_disp = 0
else:
x_disp = monitors[0].width
ey.big_win(win_name, x_disp)
t0 = time.perf_counter()
i = 0
print("Showing features..")
while self.running:
frame_success, frame, frame_rgb = ey.get_frame(cap)
if frame_success:
results = face_mesh.process(frame_rgb)
features_success, frame = ey.get_model_inputs(
frame,
frame_rgb,
results,
camera_matrix,
pcf,
frame_size,
dst_cof,
some_landmarks_ids,
True
)[:2]
if features_success:
i += 1
cv2.imshow(win_name, frame)
q = cv2.waitKey(1)
if q == ord('q') or q == ord('Q'):
break
cap.release()
cv2.destroyAllWindows()
fps = ey.get_time(i, t0, True)
print(f"FPS : {fps}")