代码之家  ›  专栏  ›  技术社区  ›  wasd

如何将numpy数组图像转换为字节?

  •  9
  • wasd  · 技术社区  · 8 年前

    我需要用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() 功能

    1 回复  |  直到 8 年前
        1
  •  13
  •   alkasm Anuj Gautam    8 年前

    您只需将数组编码为与图像相同的格式,然后 然后 使用 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