Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 2 Current »

Prerequisites

  • redis server is running

  • face detection service is running

Code (in separate terminals):

redis-server conf/redis/redis.conf
run-face-detection

You may need to install the face detection service beforehand:

pip install social-interaction-cloud[face-detection]

Walkthrough

  1. Import necessary libraries

import queue

import cv2
from sic_framework.core import utils_cv2
from sic_framework.core.message_python2 import (
    BoundingBoxesMessage,
    CompressedImageMessage,
)
from sic_framework.devices.common_desktop.desktop_camera import DesktopCameraConf
from sic_framework.devices.desktop import Desktop
from sic_framework.services.face_detection.face_detection import FaceDetection
  1. Create buffers for image/face objects, define callback functions

  • Whenever a new image or face detection is received, on_image or on_faces will be called to place the data object into its respective buffer.

imgs_buffer = queue.Queue(maxsize=1)
faces_buffer = queue.Queue(maxsize=1)


def on_image(image_message: CompressedImageMessage):
    imgs_buffer.put(image_message.image)


def on_faces(message: BoundingBoxesMessage):
    faces_buffer.put(message.bboxes)
  1. Set up the camera, register callback functions

# Create camera configuration using fx and fy to resize the image along x- and y-axis, and possibly flip image
conf = DesktopCameraConf(fx=1.0, fy=1.0, flip=1)

# Connect to the services
desktop = Desktop(camera_conf=conf)
face_rec = FaceDetection()

# Feed the camera images into the face recognition component
face_rec.connect(desktop.camera)

# Send the outputs back to this program
desktop.camera.register_callback(on_image)
face_rec.register_callback(on_faces)
  1. Display face detection

while True:
    img = imgs_buffer.get()
    faces = faces_buffer.get()

    for face in faces:
        utils_cv2.draw_bbox_on_image(face, img)

    cv2.imshow("", img)
    cv2.waitKey(1)

The full code can be found here

  • No labels