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 帧?
谢谢
如果您在名为 的变量中有效地包含了 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)