【发布时间】:2019-10-31 10:08:27
【问题描述】:
我正在通过 html 上传img 并在打开的 cv 中对其进行处理并显示图像。我在upload_file.py 中有arg parsers。所以我直接将应用程序运行为 python3 upload_file.py --listofargs
template.html
<html>
<form action="{{ url_for('handle_data') }}" method="post">
<input type="file" id="imageInput" name="file" enctype="multipart/form-data">
<ul class="list-group list-group-flush">
<li class="list-group-item">
<button type="submit" class="btn btn-primary">Colorize</button>
</li>
</ul>
</form>
<img src = {{image}}>
</html>
upload_file.py
from flask import Flask, render_template, request
import cv2
from flask import jsonify
import argparse
import numpy as np
app = Flask(__name__)
@app.route('/', methods=['POST','GET'])
def index():
return render_template('template.html')
@app.route('/handle_data', methods=['POST','GET'])
def handle_data():
img = request.form['file']
image = np.array(img)
cv2.imshow("Original", image)
return render_template(template.html, image = image)
它是如何工作的?
我直接以
python3 upload_file.py --listofargs运行flask 应用程序,而不使用flask run命令。当我点击 colorize 时出现上述错误
Internal server error
如何修复错误,以便我可以通过html 正确读取上传的img 并通过flask 显示回opencv img?
【问题讨论】:
-
提供完整的错误信息,包括回溯。 |也就是说,不确定通过在服务器端调用
cv2.imshow来实现什么(该函数需要在它执行的机器上使用 GUI),更不用说没有cv2.waitKey跟随它了。我还假设request.form['file']不包含原始像素数据,而是包含编码图像(在这种情况下,您需要先cv2.imdecode它)。 -
是的,你不能通过 Flask 发送一个 numpy 数组。先用
cv2.imdecode()就可以显示了
标签: python image opencv flask upload