web-dev-qa-db-ja.com

numpy配列イメージをバイトに変換する方法は?

Google Vision APIで画像を認識する必要があります。例の中では、次の構成を使用しています。

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

同様のことをする必要がありますが、私のイメージは

_content = cv2.imread()
_

バイトではなく、numpy配列を返します。私は試した:

_content = content.tobytes()
_

配列をバイトに変換しますが、異なる結果を与えるため、明らかに異なるバイトを返します。
だから、画像配列をopen() functionで取得した配列に似せる方法

10
wasd

画像と同じ形式で配列をエンコードする必要があり、thenは同じ形式で使用する場合はtobytes()を使用します。

>>> 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