python - 我无法使用 opencv 从字节读取图像

标签 python opencv flask

大家好,请帮帮我。

我有 Flask Rest API,它接收多部分/表单数据作为图像,我想使用 opencv 来处理它。

我的问题是我无法使用 cv2.imdecode 读取图像。

这个函数不返回任何内容,所以出了什么问题。

imgFile = request.files['image']
imgBuffer = imgFile.read() # <class 'bytes'>
#b'\xc3\xbf\xc3\x98\xc3\xbf\xc3\xa0\x00\x10'

img = np.frombuffer(imgBuffer, dtype='uint8') # <class 'numpy.ndarray'>
#[195 191 195 152 195 191 195 160   0  16]

img = cv2.imdecode(img, cv2.IMREAD_COLOR) # <class 'NoneType'>

My image is here

最佳答案

cv2.imdecode() 期望解码 JPEG 编码或 PNG 编码的图像。这样的图像将以:

  • JPEG 签名ff d8 ff
  • PNG 签名 89 50 4e 47 0d 0a 1a 0a

你的没有。所以它可能只是原始的、未编码的像素,您可能只需要:

img = np.array(imgBuffer).reshape((height,width))

另一个线索是您的字节缓冲区的大小。如果其大小与灰度图像的高度 x 宽度相匹配(如果是彩色图像,则为 3 倍),则意味着您的图像只是像素数据,而您会期望 JPEG/PNG 编码的图像会小得多,因为它经过了压缩。

关于python - 我无法使用 opencv 从字节读取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68110032/

相关文章:

Python/ flask /WTForm/Jinja : Passing variable value into wftform field for "Update Page"

python - 变量是名称、值还是内存位置?

python - random.randint 的加权版本

python - 使用 all() 比较字典中的值的多行 if 语句

opencv - 为什么模板匹配后掩模图像消失?

c - ‘true’ 在 opencv 中未声明(首次在此函数中使用)

opencv - 如何跟踪快速移动的物体?

python - 使用嗅探与 python elasticsearch 客户端解决死 TCP 连接问题

javascript - Flask - 获取数据框以 csv 格式下载

azure - Azure 上的 Flask APP 给出 import cv2 ImportError : libGL. so.1: 部署后