Beispiel #1
0
def detector_detect(request):
    """
    Runs facial detection on a frame that is sent via a REST
    API call and returns a JSON formatted set of coordinates.
    """
    logger.debug(prepend_ip("Request received: %s" % request, request))

    image = get_image_from_request(request, "face")
    if not isinstance(image, np.ndarray):
        # If it's not an image in numpy array format, it is an
        # HttpResponseBadRequest which we will return to the caller.
        return image

    logger.debug(prepend_ip("Performing detection process", request))
    start = time.time()
    rects = myFaceDetector.detect_faces(image)
    elapsed = "%.3f" % ((time.time() - start) * 1000)

    # Create a JSON response to be returned in a consistent manner
    if len(rects) == 0:
        ret = {"success": "false", "server_processing_time": elapsed}
    else:
        ret = {
            "success": "true",
            "server_processing_time": elapsed,
            "rects": rects.tolist()
        }
    logger.info(
        prepend_ip("%s ms to detect rectangles: %s" % (elapsed, ret), request))
    json_ret = json.dumps(ret)
    return HttpResponse(json_ret)
Beispiel #2
0
def recognizer_add(request):
    """
    Perform face detection on received image. If face found, save image to
    subject's training data directory.
    """
    logger.debug(prepend_ip("Request received: %s" % request, request))

    image = get_image_from_request(request, "face")
    if not isinstance(image, np.ndarray):
        return image

    if request.POST.get("owner", "") != "":
        owner = request.POST.get("owner")
        logger.info(
            prepend_ip("Guest image for %s from owner %s" % (subject, owner),
                       request))

    logger.debug(prepend_ip("Performing detection process", request))
    start = time.time()
    rects = myFaceDetector.detect_faces(image)
    elapsed = "%.3f" % ((time.time() - start) * 1000)

    # Create a JSON response to be returned in a consistent manner
    if len(rects) == 0:
        ret = {"success": "false", "server_processing_time": elapsed}
    else:
        ret = {"success": "true", "rects": rects.tolist()}
        # Save image to subject's directory
        myFaceRecognizer.save_subject_image(subject, image)

    logger.info(
        prepend_ip("%s ms to detect rectangles: %s" % (elapsed, ret), request))
    json_ret = json.dumps(ret)
    return HttpResponse(json_ret)
    def receive(self, text_data=None, bytes_data=None):
        if bytes_data != None:
            logger.info("bytes_data length=%d" % (len(bytes_data)))
            start = time.time()
            image = imread(io.BytesIO(bytes_data))
            rects = myFaceDetector.detect_faces(image)
            elapsed = "%.3f" % ((time.time() - start) * 1000)
            if len(rects) == 0:
                ret = {"success": "false", "server_processing_time": elapsed}
            else:
                ret = {
                    "success": "true",
                    "server_processing_time": elapsed,
                    "rects": rects.tolist()
                }
            response = json.dumps(ret)
        else:
            logger.info("text_data=%s" % (text_data))
            # If text is received, just echo back what we received.
            response = text_data

        logger.info("response=%s" % response)
        self.send(text_data=response)