web-dev-qa-db-fra.com

Comment transformer une image de tableau numpy en octets?

J'ai besoin de reconnaître l'image avec l'API Google Vision. Parmi les exemples, ils utilisent la construction suivante:

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

Je dois faire de même, mais mon image vient de:

content = cv2.imread()

Qui renvoie un tableau numpy, pas d'octets. J'ai essayé:

content = content.tobytes()

Ce qui convertit le tableau en octets, mais renvoie apparemment différents octets, car il donne un résultat différent.
Alors, comment rendre mon tableau d'images similaire à celui que j'obtiens par la fonction open()

10
wasd

Vous devez simplement encoder le tableau dans le même format que l'image, et alors utilisez tobytes() si vous le voulez dans le même format.

>>> import cv2
>>> with open('image.png', 'rb') as image_file:
...     content1 = image_file.read()
...
>>> image = cv2.imread('image.png')
>>> success, encoded_image = cv2.imencode('.png', image)
>>> content2 = encoded_image.tobytes()
>>> content1 == content2
True
13
alkasm