如何修复服务器“响应”以供客户端查看图像?

时间:2019-09-07 09:54:45

标签: python opencv flask flask-restful

我正在写一个涉及服务器图像处理的小型应用程序。 客户端选择一个图像并将其发送到服务器上,然后服务器使用OpenCV库进行一些精美的处理,然后将新图像返回给客户端。

我有以下代码段。

这是我的 server.py

r = request

# Convert string of image data to uint8.
nparr = np.frombuffer(r.data, np.uint8)
# Decode image.
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)

# Do some fancy processing here. 
[...]

# Build a response dict to send back to client.
response = {"message": img_encoded.tostring()}

# Encode response using jsonpickle.
[...]

return Response(status=200,
                response=response_pickled,
                mimetype="application/json")

这是我的 client.py

# Load the image.
img = cv2.imread("dog.jpg")

# Encode image as jpg.
_, img_encoded = cv2.imencode('.jpg', img)

# Send HTTP request with image and receive response.
response = requests.post(URL,
                         headers=headers,
                         data=img_encoded.tostring())

# Get the image form the response.
json = json.loads(response.text)
image_data = json["message"]
img_grayscale = bytes(image_data['py/b64'], 'utf-8')

# Convert string of image data to uint8.
nparr = np.frombuffer(img_grayscale, np.uint8)

# Decode image.
img = cv2.imdecode(nparr, cv2.IMREAD_GRAYSCALE)

cv2.imwrite("processed.jpg", img)

我希望实际上在当前文件夹中的文件 processed.jpg 作为输出,但是,当我打开该文件时,会出现以下消息:

您可以打开文件“ processed.jpg”,因为它为空。

我想念什么?要通过HTTP从客户端到服务器以及从服务器到客户端通过HTTP转换和传输图像,要遵循特定的标准(或模式)吗?

感谢您的帮助!

0 个答案:

没有答案