使用python opencv从zip加载图像

IUn*_*own 6 python opencv

我能够从zip成功加载图像:

with zipfile.ZipFile('test.zip', 'r') as zfile:
    data = zfile.read('test.jpg')
    # how to open this using imread or imdecode?
Run Code Online (Sandbox Code Playgroud)

问题是:如何在不保存图像的情况下使用imread或imdecode在opencv中进一步处理?

更新:

这是我得到的预期错误.我需要将'data'转换为opencv可以使用的类型.

data = zfile.read('test.jpg')
buf = StringIO.StringIO(data)
im = cv2.imdecode(buf, cv2.IMREAD_GRAYSCALE)
# results in error: TypeError: buf is not a numpy array, neither a scalar

a = np.asarray(buf)
cv2.imdecode(a, cv2.IMREAD_GRAYSCALE)
# results in error: TypeError: buf data type = 17 is not supported
Run Code Online (Sandbox Code Playgroud)

HYR*_*YRY 18

用于numpy.frombuffer()从字符串创建uint8数组:

import zipfile
import cv2
import numpy as np

with zipfile.ZipFile('test.zip', 'r') as zfile:
    data = zfile.read('test.jpg')

img = cv2.imdecode(np.frombuffer(data, np.uint8), 1)    
Run Code Online (Sandbox Code Playgroud)