【发布时间】:2019-04-28 16:34:57
【问题描述】:
我正在尝试以 json 格式发送 OpenCV 图像并在另一端接收它,但我在编码和解码图像时遇到了无穷无尽的问题
我通过以下方式以 JSON 格式发送:
dumps({"image": b64encode(image[y1:y2, x1:x2]).decode('utf-8')})
在另一端我尝试解码它(我需要它作为枕头图像):
image = Image.open(BytesIO(base64.b64decode(data['image'])))
但我收到了Exception cannot identify image file <_io.BytesIO object at 0x7fbd34c98a98>
也试过了:
nparr = np.fromstring(b64decode(data['image']), np.uint8)
image = cv2.imdecode(nparr, cv2.COLOR_BGR2RGB)
pil_image = Image.fromarray(image)
然后我得到来自Image.fromarray的'NoneType' object has no attribute '__array_interface__'
任何想法我做错了什么?
【问题讨论】:
-
您需要更清楚地了解您要发送的确切内容以及为什么要将其作为 JSON 发送。你想只发送与像素对应的字节,还是一个 Numpy 数组,或者你想发送 JPEG 或 PNG 压缩图像。也许您可以为每一端共享一段更完整的代码 - 发送和接收?
-
我正在使用以下
image[y1:y2, x1:x2]从 OpenCV 图像中取出一个矩形(所以我认为它应该是一个 numpy 数组),我想以 json 格式发送它。我认为向其中添加不相关的代码不是一个好主意,只会让问题变得不那么清楚,它现在是 -
好的,如果你要发送一个 Numpy 数组,你需要在接收端使用这个
PILimage = Image.fromarray(NumpyArray) -
已经试过了,我想我可能发送错误的图像
标签: python json opencv base64 python-imaging-library