gpt4 book ai didi

python - 如何从 Python Azure 存储下载 Blob 图像并从中创建图像对象?

转载 作者:行者123 更新时间:2023-12-03 04:24:15 29 4
gpt4 key购买 nike

我有一个 block blob,它是一个 png 图像。当我将 blob 转换为字节并尝试创建图像时,我得到数据不足。我是 python 和图像分析的新手。问题是如果图像分别为 2024*1512,则 Blob 的大小为 1714562,宽度和高度。下面是我检索图像的代码:

#Get Required image
def findImage(containerName, imageName):
return block_blob_service.get_blob_to_bytes(
containerName,
input_folder + '/' + imageName,
max_connections=1).content;

我必须执行如下所述的操作来创建图像:

 np.array(imageToProcess).reshape(imageSize)

或者

PIL.Image.frombytes('L', imageSize, np.byte(imageToProcess), 'raw', 'L', 0, 1)
  • imageToProcess 是 findImage 函数的输出。

我尝试将 blob 传输到流或路径,但仍然存在相同的问题。该 Blob 需要重新调整为实际图像大小并传递给另一个处理函数。如果有人帮助我理解问题和可能的解决方案,我将不胜感激。

最佳答案

您从 Azure Blob 存储下载的 PNG 文件是 png 格式的二进制字节字符串,您需要使用 OpenCV 和 Numpy 将其转换为 numpy 数组或 PIL.Image 对象。

这是我使用 OpenCV 和 numpy 或 PIL.Image 的示例代码。

  1. 使用 OpenCV 和 numpy

    import numpy as np
    import cv2

    data = findImage(containerName, imageName)
    print type(data)
    # <type 'str'>
    nparr = np.fromstring(data, np.uint8)
    # if the numpy version is 2.x
    img_np = cv2.imdecode(nparr, cv2.CV_LOAD_IMAGE_COLOR)
    # if the numpy version is 3.x
    img_np = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
    print type(img_np)
    # <type 'numpy.ndarray'>
  2. 使用PIL.ImageStringIO

    from PIl import Image
    from StringIO import StringIO

    data = findImage(containerName, imageName)
    print type(data)
    # <type 'str'>
    img = Image.open(StringIO(data))
    print type(img)
    # <class 'PIL.PngImagePlugin.PngImageFile'>

希望有帮助。

关于python - 如何从 Python Azure 存储下载 Blob 图像并从中创建图像对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45276455/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com