Python resize image and send to google vision function

懵懂的女人 提交于 2019-12-22 12:20:12

问题


Since google vision has some restrictions on input image size, I want to first resize input image and then use the detect_labels() function.

Here's their sample code

def detect_labels(path):
"""Detects labels in the file."""
vision_client = vision.Client()

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

image = vision_client.image(content=content)

labels = image.detect_labels()
print('Labels:')

for label in labels:
    print(label.description)

they use io to open the image file. I wonder in this way, how to resize the image in memory and then call detect_labels() ?


回答1:


You can resize the image via PIL/Pillow and then pass it to the client:

replace

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

with

# Warning: untested code, may require some fiddling
import Image, StringIO

img = Image.open(path)
img.thumbnail((512, 512))
buffer = StringIO.StringIO()
img.save(buffer, "PNG")

content = buffer.getvalue()



回答2:


Code for python3:

Credits : @kristaps

import io
from PIL import Image
img = Image.open(path)
img.thumbnail((512, 512))
buffer = io.BytesIO()
img.save(buffer, "JPEG")
content = buffer.getvalue()


来源:https://stackoverflow.com/questions/45176829/python-resize-image-and-send-to-google-vision-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!