【问题标题】:How to encode a numpy array with PIL, like opencv's cv2.imencode()?如何使用 PIL 对 numpy 数组进行编码,例如 opencv 的 cv2.imencode()?
【发布时间】:2022-01-13 14:31:03
【问题描述】:

我正在用烧瓶制作一个 REST API,我想将图像发送到我的服务器。到目前为止,我做到了-

from PIL import Image, ImageOps
import cv2

image= Image.open("image.jpg")
size = (224, 224)
image = ImageOps.fit(image, size, Image.ANTIALIAS)
image= np.array(image)

_, JPEG = cv2.imencode('.jpg', image)

response_raw = requests.post(test_url, data=JPEG.tostring(), headers=headers)

现在它工作得非常好,但不幸的是我在我的最终项目中使用了 OPENCV。所以我用 PIL 进行了测试,试图复制 cv2.imencode() 方法,但它没有用。我这样做了,替换了cv2.imencode 方法(并删除了image=np.array(image)-

buffer = BytesIO()
image.save(buffer, format="JPEG")

JPEG = buffer.getvalue()

这不起作用,因为type(JPEG) 返回<class 'bytes'>,而工作代码(带有cv2.imencode("jpg", img))返回<class 'numpy.ndarray'>。

如何对 numpy 数组进行编码处理?

【问题讨论】:

  • 试试,JPEG = np.array(buffer.getvalue()),你得到了什么?
  • 我很困惑你为什么会感到困惑。 bytes 对象包含字节。一个 uint8 类型的 numpy 数组(你有...)也包含字节。
  • 好吧,我只是对整个事情感到非常困惑。 np.array(buffer.get_value()) 似乎有效。谢谢!对不起!

标签: python numpy opencv flask python-imaging-library


【解决方案1】:

JPEG = np.array(buffer.getvalue()) 似乎有效

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 2012-03-06
    • 1970-01-01
    相关资源
    最近更新 更多