コード例 #1
0
ファイル: detectvision.py プロジェクト: mikezucc/questlog
def detect_crop_hints(path, frame_id, user_id):
    print "Detects crop hints in an image." + path
    client = vision.ImageAnnotatorClient()

    # [START migration_crop_hints]
    with io.open(path, 'rb') as image_file:
        content = image_file.read()
    image = types.Image(content=content)

    # worth looking at this bullshit constant right here
    crop_hints_params = types.CropHintsParams(aspect_ratios=[1.77])
    image_context = types.ImageContext(crop_hints_params=crop_hints_params)

    response = client.crop_hints(image=image, image_context=image_context)
    hints = response.crop_hints_annotation.crop_hints

    cropHintsList = []
    count = 0
    for n, hint in enumerate(hints):
        print('\nCrop Hint: {}'.format(n))
        crop_to_hint(path, hint.bounding_poly.vertices, count)
        count = count + 1
        vertices = ([
            '({},{})'.format(vertex.x, vertex.y)
            for vertex in hint.bounding_poly.vertices
        ])
        print('bounds: {}'.format(','.join(vertices)))
        vertexes = []
        for vertex in hint.bounding_poly.vertices:
            vertexes.append({"x": vertex.x, "y": vertex.y})
        cropHintsList.append(vertexes)

    cropHintsJSON = {"crophints": cropHintsList}
    spitJSONAPIResulttoMDB(cropHintsJSON, "crophints_ocr_google", frame_id,
                           user_id)
コード例 #2
0
def get_crop_hint(path):
    """Detect crop hints on a single image and return the first result."""
    client = vision.ImageAnnotatorClient()

    with io.open(path, 'rb') as image_file:
        content = image_file.read()

    image = types.Image(content=content)

    crop_hints_params = types.CropHintsParams()
    image_context = types.ImageContext(crop_hints_params=crop_hints_params)

    response = client.crop_hints(image=image, image_context=image_context)
    hints = response.crop_hints_annotation.crop_hints

    vertices = hints[0].bounding_poly.vertices

    return vertices
コード例 #3
0
ファイル: crophints.py プロジェクト: Nethika/crop-hints
def get_crop_hints(path, ratios):
    """Detect crop hints on a single image and return the first result."""
    client = vision.ImageAnnotatorClient()

    with io.open(path, 'rb') as image_file:
        content = image_file.read()

    image = types.Image(content=content)

    crop_hints_params = types.CropHintsParams(aspect_ratios=ratios)
    image_context = types.ImageContext(crop_hints_params=crop_hints_params)

    response = client.crop_hints(image=image, image_context=image_context)
    hints = response.crop_hints_annotation.crop_hints

    # Get bounds for the first crop hint using an aspect ratio of 1.77.
    vertices = (a.bounding_poly.vertices for a in hints)

    return vertices
コード例 #4
0
def detect_crop_hints_uri(uri):
    """Detects crop hints in the file located in Google Cloud Storage."""
    client = vision.ImageAnnotatorClient()
    image = types.Image()
    image.source.image_uri = uri

    crop_hints_params = types.CropHintsParams(aspect_ratios=[1.77])
    image_context = types.ImageContext(crop_hints_params=crop_hints_params)

    response = client.crop_hints(image=image, image_context=image_context)
    hints = response.crop_hints_annotation.crop_hints

    for n, hint in enumerate(hints):
        print('\nCrop Hint: {}'.format(n))

        vertices = (['({},{})'.format(vertex.x, vertex.y)
                    for vertex in hint.bounding_poly.vertices])

        print('bounds: {}'.format(','.join(vertices)))
コード例 #5
0
    def detect_crop_hints(latest_file, image_file):
        #Detect crop hints on a single image and return the first result.
        client = vision.ImageAnnotatorClient()

        with io.open(image_file, 'rb') as image_file:
            content = image_file.read()

        image = types.Image(content=content)

        crop_hints_params = types.CropHintsParams(aspect_ratios=[1.77])
        image_context = types.ImageContext(crop_hints_params=crop_hints_params)

        response = client.crop_hints(image=image, image_context=image_context)
        hints = response.crop_hints_annotation.crop_hints

        # Get bounds for the first crop hint using an aspect ratio of 1.77.
        vertices = hints[0].bounding_poly.vertices

        return vertices
コード例 #6
0
    def detect_crop_hints_uri(self, uri):
        """
    Description: 
       Detects crop hints in an image.
    Args: 
       uri: url to an image on the Internet
    Returns:
       crop hints json object
    """

        image = types.Image()
        image.source.image_uri = uri

        crop_hints_params = types.CropHintsParams(aspect_ratios=[1.77])
        image_context = types.ImageContext(crop_hints_params=crop_hints_params)

        response = self.client.crop_hints(image=image,
                                          image_context=image_context)

        return response
コード例 #7
0
    def get_crop_hint(self, path):
        """Detect crop hints on a single image and return the first result."""
        client = vision.ImageAnnotatorClient()

        with io.open(path, 'rb') as image_file:
            content = image_file.read()

        image = types.Image(content=content)

        crop_hints_params = types.CropHintsParams(aspect_ratios=[0.3])
        image_context = types.ImageContext(crop_hints_params=crop_hints_params)

        response = client.crop_hints(image=image, image_context=image_context)
        hints = response.crop_hints_annotation.crop_hints

        try:
            vertices = hints[0].bounding_poly.vertices
        except:
            raise AssertionError("the image doesn't exist")
        return vertices
コード例 #8
0
def get_crop_hint(image, aspect_ratios=''):
    """Detect crop hints on a single image and return the first result."""

    try:
        aspect_ratios = [float(x) for x in aspect_ratios.split(',')]
        crop_hints_params = types.CropHintsParams(aspect_ratios=aspect_ratios)
        image_context = types.ImageContext(crop_hints_params=crop_hints_params)

        response = client.crop_hints(image=image_properties.my_image(image),
                                     image_context=image_context)
    except ValueError:
        response = client.crop_hints(image=image_properties.my_image(image), )

    hints = response.crop_hints_annotation.crop_hints

    # Get bounds for the first crop hint using an aspect ratio of 1.77.
    return {
        str(ratio): hint.bounding_poly.vertices
        for ratio, hint in zip(aspect_ratios, hints)
    }
コード例 #9
0
    def detect_crop_hints(self, path):
        """
    Description: 
       Detects crop hints in an image.
    Args: 
       path: path to a local image
    Returns:
       crop hints json object
    """

        with io.open(path, 'rb') as image_file:
            content = image_file.read()
        image = types.Image(content=content)

        crop_hints_params = types.CropHintsParams(aspect_ratios=[1.77])
        image_context = types.ImageContext(crop_hints_params=crop_hints_params)

        response = self.client.crop_hints(image=image,
                                          image_context=image_context)

        return response
コード例 #10
0
def _detect_cropping(client, image):
    """
    Get cropping hints for 1:1 ratio from vision api.
    :param client:
    :param image:
    :return:
    """
    crop_hints_params = types.CropHintsParams(aspect_ratios=[1.0])
    image_context = types.ImageContext(crop_hints_params=crop_hints_params)

    response = client.crop_hints(image=image, image_context=image_context)
    hints = response.crop_hints_annotation.crop_hints

    vertices = []
    for v in hints[0].bounding_poly.vertices:
        vertices.append({
            "x": v.x,
            "y": v.y,
        })

    return vertices
コード例 #11
0
def detect_crop_hints(path):
    """Detects crop hints in an image."""
    client = vision.ImageAnnotatorClient()

    # [START migration_crop_hints]
    with io.open(path, 'rb') as image_file:
        content = image_file.read()
    image = types.Image(content=content)

    crop_hints_params = types.CropHintsParams(aspect_ratios=[1.77])
    image_context = types.ImageContext(crop_hints_params=crop_hints_params)

    response = client.crop_hints(image=image, image_context=image_context)
    hints = response.crop_hints_annotation.crop_hints

    for n, hint in enumerate(hints):
        print('\nCrop Hint: {}'.format(n))

        vertices = (['({},{})'.format(vertex.x, vertex.y)
                    for vertex in hint.bounding_poly.vertices])

        print('bounds: {}'.format(','.join(vertices)))