首页 > 解决方案 > 将base64编码的bmp图像转换为python后端的像素值

问题描述

正如问题所说,我需要一种将base64图像解码为该图像像素值的方法。我尝试使用 opencv 进行 imdecode,这就是我发现的所有内容。

我想这样做的原因是因为我正在编写一个后端 api,它从 web 应用程序接收 base64 编码图像(如果需要,用 TypeScript 编写,从一个对象)然后在 python 中我想解析它的像素值做一些计算,比如看看图像的平均颜色是什么。

问题是数据可能不会像像素一样发送,这是一种奇怪的格式,我不知道如何解码。

这是一个示例 base64 图像:

EDIT iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAh0lEQVQ4T+3TMQ6AIAwF0PZIbIxwcljZuFENJhiDrX4imzKT109bWESEFh7+wdfdvO0hM18KPM0QAhtyxu/Q6Sl32EKnwForOecohEApJbXfMLjsyeNglgzF2iUNV5/cUllJSinkvT9qjPemwSblnCnGuKMwiH4ZCOxYT2GtiFYUXhs08QfBDdNTgsUZ/lOUAAAAAElFTkSuQmCC==

它可以在浏览器解码器中解码,它也可以正确显示图像,我只是无法解码它,以便我可以遍历像素值。

标签: pythontypescripthtml5-canvasbackend

解决方案


import base64

import numpy as np
import cv2

base64_string = "INSERT BASE64 HERE"
decoded = base64.b64decode(base64_string)
buffer = np.fromstring(decoded, np.float32)
image_array = cv2.imdecode(buffer, cv2.IMREAD_COLOR)
cv2.imshow("img", image_array)
cv2.waitKey(0)

base64 字符串被解码,然后 np.fromstring 将解码后的字符串转换为数组。最后 cv2.imdecode 解码 NumPy 数组以转换为图像格式。


推荐阅读