【发布时间】: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