我正在写一个涉及服务器图像处理的小型应用程序。 客户端选择一个图像并将其发送到服务器上,然后服务器使用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转换和传输图像,要遵循特定的标准(或模式)吗?
感谢您的帮助!