如何使用openCv python将图像文件对象转换为numpy数组?

Kru*_*ate 9 python opencv numpy flask

我正在开发 API 以使用 Flask 上传图像。上传后我想使用openCV修改图像,因为openCV需要numpy数组对象才能拥有文件对象,我如何转换为numpy数组?这是我的代码

@app.route('/upload', methods=['POST'])
def enroll_user():
    file = request.files['fileName']
    # file.save(os.path.join(file.filename))
    return response
Run Code Online (Sandbox Code Playgroud)

编辑:更新的代码

@app.route('/upload', methods=['POST'])
    def enroll_user():
        file = request.files['fileName']
        response = file.read()
        # file.save(os.path.join(file.filename))
        return response
Run Code Online (Sandbox Code Playgroud)

我想使用以下代码将文件转换为 cv2 帧

ret, frame = cv2.imread(file)
Run Code Online (Sandbox Code Playgroud)

一种方法是将图像写入磁盘并使用 cv2.imread 再次读取,但我不想这样做,因为这会很耗时。那么有没有办法从文件对象转换为 cv2 帧?

谢谢

Mar*_*ell 4

如果您在名为 的变量中有效地包含了 JPEG/PNG 文件的内容response,我认为您可以执行以下操作:

frame = cv2.imdecode(response)
Run Code Online (Sandbox Code Playgroud)

或者,您可能需要执行以下操作:

frame = cv2.imdecode(np.fromstring(response, np.uint8), cv2.IMREAD_COLOR)
Run Code Online (Sandbox Code Playgroud)

如果做不到这一点,另一种方法是这样的:

from io import BytesIO
from scipy import misc

frame = misc.imread(BytesIO(response))
Run Code Online (Sandbox Code Playgroud)